diff --git a/ModuleManager/Logging/LogSplitter.cs b/ModuleManager/Logging/LogSplitter.cs
new file mode 100644
index 00000000..53712f20
--- /dev/null
+++ b/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);
+ }
+ }
+}
diff --git a/ModuleManager/ModuleManager.csproj b/ModuleManager/ModuleManager.csproj
index c22076f6..51550b90 100644
--- a/ModuleManager/ModuleManager.csproj
+++ b/ModuleManager/ModuleManager.csproj
@@ -50,6 +50,7 @@
+
diff --git a/ModuleManagerTests/Logging/LogSplitterTest.cs b/ModuleManagerTests/Logging/LogSplitterTest.cs
new file mode 100644
index 00000000..2375a3a3
--- /dev/null
+++ b/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(delegate
+ {
+ new LogSplitter(null, Substitute.For());
+ });
+
+ Assert.Equal("logger1", ex.ParamName);
+ }
+
+ [Fact]
+ public void TestConstructor__Logger2Null()
+ {
+ ArgumentNullException ex = Assert.Throws(delegate
+ {
+ new LogSplitter(Substitute.For(), null);
+ });
+
+ Assert.Equal("logger2", ex.ParamName);
+ }
+
+ [Fact]
+ public void TestLog()
+ {
+ IBasicLogger logger1 = Substitute.For();
+ IBasicLogger logger2 = Substitute.For();
+ 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 logger2 = Substitute.For();
+ 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);
+ }
+ }
+}
diff --git a/ModuleManagerTests/ModuleManagerTests.csproj b/ModuleManagerTests/ModuleManagerTests.csproj
index f07b5c07..f5d9a47e 100644
--- a/ModuleManagerTests/ModuleManagerTests.csproj
+++ b/ModuleManagerTests/ModuleManagerTests.csproj
@@ -85,6 +85,7 @@
+