Skip to content

Commit

Permalink
add LogSplitter
Browse files Browse the repository at this point in the history
directs logs to two other loggers
  • Loading branch information
blowfishpro committed Jan 10, 2019
1 parent ed78083 commit 52d8b18
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 0 deletions.
29 changes: 29 additions & 0 deletions ModuleManager/Logging/LogSplitter.cs
@@ -0,0 +1,29 @@
using System;
using UnityEngine;

namespace ModuleManager.Logging
{
public class LogSplitter : IBasicLogger
{
private readonly IBasicLogger logger1;
private readonly IBasicLogger logger2;

public LogSplitter(IBasicLogger logger1, IBasicLogger logger2)
{
this.logger1 = logger1 ?? throw new ArgumentNullException(nameof(logger1));
this.logger2 = logger2 ?? throw new ArgumentNullException(nameof(logger2));
}

public void Log(LogType logType, string message)
{
logger1.Log(logType, message);
logger2.Log(logType, message);
}

public void Exception(string message, Exception exception)
{
logger1.Exception(message, exception);
logger2.Exception(message, exception);
}
}
}
1 change: 1 addition & 0 deletions ModuleManager/ModuleManager.csproj
Expand Up @@ -50,6 +50,7 @@
<Compile Include="Logging\StreamLogger.cs" />
<Compile Include="Logging\IBasicLogger.cs" />
<Compile Include="Logging\ILogMessage.cs" />
<Compile Include="Logging\LogSplitter.cs" />
<Compile Include="Logging\ModLogger.cs" />
<Compile Include="Logging\NormalMessage.cs" />
<Compile Include="Logging\QueueLogger.cs" />
Expand Down
56 changes: 56 additions & 0 deletions ModuleManagerTests/Logging/LogSplitterTest.cs
@@ -0,0 +1,56 @@
using System;
using Xunit;
using NSubstitute;
using UnityEngine;
using ModuleManager.Logging;

namespace ModuleManagerTests.Logging
{
public class LogSplitterTest
{
[Fact]
public void TestConstructor__Logger1Null()
{
ArgumentNullException ex = Assert.Throws<ArgumentNullException>(delegate
{
new LogSplitter(null, Substitute.For<IBasicLogger>());
});

Assert.Equal("logger1", ex.ParamName);
}

[Fact]
public void TestConstructor__Logger2Null()
{
ArgumentNullException ex = Assert.Throws<ArgumentNullException>(delegate
{
new LogSplitter(Substitute.For<IBasicLogger>(), null);
});

Assert.Equal("logger2", ex.ParamName);
}

[Fact]
public void TestLog()
{
IBasicLogger logger1 = Substitute.For<IBasicLogger>();
IBasicLogger logger2 = Substitute.For<IBasicLogger>();
LogSplitter logSplitter = new LogSplitter(logger1, logger2);
logSplitter.Log(LogType.Log, "some stuff");
logger1.Received().Log(LogType.Log, "some stuff");
logger2.Received().Log(LogType.Log, "some stuff");
}

[Fact]
public void TestException()
{
IBasicLogger logger1 = Substitute.For<IBasicLogger>();
IBasicLogger logger2 = Substitute.For<IBasicLogger>();
LogSplitter logSplitter = new LogSplitter(logger1, logger2);
Exception ex = new Exception();
logSplitter.Exception("some stuff", ex);
logger1.Received().Exception("some stuff", ex);
logger2.Received().Exception("some stuff", ex);
}
}
}
1 change: 1 addition & 0 deletions ModuleManagerTests/ModuleManagerTests.csproj
Expand Up @@ -85,6 +85,7 @@
<Compile Include="NeedsCheckerTest.cs" />
<Compile Include="Collections\MessageQueueTest.cs" />
<Compile Include="Logging\ExceptionMessageTest.cs" />
<Compile Include="Logging\LogSplitterTest.cs" />
<Compile Include="Logging\NormalMessageTest.cs" />
<Compile Include="Logging\QueueLoggerTest.cs" />
<Compile Include="NodeMatcherTest.cs" />
Expand Down

0 comments on commit 52d8b18

Please sign in to comment.