diff --git a/src/NHibernate.Test/FilterTest/ConfigFixture.cs b/src/NHibernate.Test/FilterTest/ConfigFixture.cs index 6e908cfd850..2c930e13272 100644 --- a/src/NHibernate.Test/FilterTest/ConfigFixture.cs +++ b/src/NHibernate.Test/FilterTest/ConfigFixture.cs @@ -242,7 +242,7 @@ public void FilterDefWithoutReference() var cfg = GetConfiguration(); cfg.AddXmlString(filterDef); var memoryAppender = new MemoryAppender(); - BasicConfigurator.Configure(memoryAppender); + BasicConfigurator.Configure(LogManager.GetRepository(typeof(ConfigFixture).Assembly), memoryAppender); try { cfg.BuildSessionFactory(); diff --git a/src/NHibernate.Test/IdTest/AssignedFixture.cs b/src/NHibernate.Test/IdTest/AssignedFixture.cs index 0ac4d3c3e19..137c3e7ac9d 100644 --- a/src/NHibernate.Test/IdTest/AssignedFixture.cs +++ b/src/NHibernate.Test/IdTest/AssignedFixture.cs @@ -43,7 +43,7 @@ protected override void OnTearDown() [Test] public void SaveOrUpdate_Save() { - using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (LogSpy ls = new LogSpy(LogManager.GetLogger(typeof(AssignedFixture).Assembly, "NHibernate"), Level.Warn)) using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); @@ -70,7 +70,7 @@ public void SaveOrUpdate_Save() [Test] public void SaveNoWarning() { - using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (LogSpy ls = new LogSpy(LogManager.GetLogger(typeof(AssignedFixture).Assembly, "NHibernate"), Level.Warn)) using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); @@ -104,7 +104,7 @@ public void SaveOrUpdate_Update() t.Commit(); } - using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (LogSpy ls = new LogSpy(LogManager.GetLogger(typeof(AssignedFixture).Assembly, "NHibernate"), Level.Warn)) using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); @@ -142,7 +142,7 @@ public void UpdateNoWarning() t.Commit(); } - using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (LogSpy ls = new LogSpy(LogManager.GetLogger(typeof(AssignedFixture).Assembly, "NHibernate"), Level.Warn)) using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); @@ -179,7 +179,7 @@ public void InsertCascade() t.Commit(); } - using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (LogSpy ls = new LogSpy(LogManager.GetLogger(typeof(AssignedFixture).Assembly, "NHibernate"), Level.Warn)) using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); @@ -218,7 +218,7 @@ public void InsertCascadeNoWarning() t.Commit(); } - using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (LogSpy ls = new LogSpy(LogManager.GetLogger(typeof(AssignedFixture).Assembly, "NHibernate"), Level.Warn)) using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); diff --git a/src/NHibernate.Test/LogSpy.cs b/src/NHibernate.Test/LogSpy.cs index 7852a2d85a5..386b4286658 100644 --- a/src/NHibernate.Test/LogSpy.cs +++ b/src/NHibernate.Test/LogSpy.cs @@ -40,8 +40,8 @@ public LogSpy(ILog log) : this(log, false) { } public LogSpy(System.Type loggerType) : this(LogManager.GetLogger(loggerType), false) { } public LogSpy(System.Type loggerType, bool disable) : this(LogManager.GetLogger(loggerType), disable) { } - public LogSpy(string loggerName) : this(LogManager.GetLogger(loggerName), false) { } - public LogSpy(string loggerName, bool disable) : this(LogManager.GetLogger(loggerName), disable) { } + public LogSpy(string loggerName) : this(LogManager.GetLogger(typeof(LogSpy).Assembly, loggerName), false) { } + public LogSpy(string loggerName, bool disable) : this(LogManager.GetLogger(typeof(LogSpy).Assembly, loggerName), disable) { } public MemoryAppender Appender { diff --git a/src/NHibernate.Test/NHSpecificTest/Logs/LogsFixture.cs b/src/NHibernate.Test/NHSpecificTest/Logs/LogsFixture.cs index 3bc10acc717..ce72e2099b6 100644 --- a/src/NHibernate.Test/NHSpecificTest/Logs/LogsFixture.cs +++ b/src/NHibernate.Test/NHSpecificTest/Logs/LogsFixture.cs @@ -68,7 +68,7 @@ public TextLogSpy(string loggerName, string pattern) Threshold = Level.All, Writer = new StringWriter(stringBuilder) }; - loggerImpl = (Logger)LogManager.GetLogger(loggerName).Logger; + loggerImpl = (Logger)LogManager.GetLogger(typeof(LogsFixture).Assembly, loggerName).Logger; loggerImpl.AddAppender(appender); loggerImpl.Level = Level.All; } diff --git a/src/NHibernate.Test/NHSpecificTest/NH1093/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1093/Fixture.cs index ab5cae9df6a..ff00854c1db 100644 --- a/src/NHibernate.Test/NHSpecificTest/NH1093/Fixture.cs +++ b/src/NHibernate.Test/NHSpecificTest/NH1093/Fixture.cs @@ -83,7 +83,7 @@ private void NormalList() protected override void BuildSessionFactory() { // Without configured cache, should log warn. - using (var ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (var ls = new LogSpy(LogManager.GetLogger(typeof(Fixture).Assembly, "NHibernate"), Level.Warn)) { base.BuildSessionFactory(); Assert.That(ls.GetWholeLog(), Does.Contain("Fake cache used")); diff --git a/src/NHibernate.Test/NHSpecificTest/NH1587/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1587/Fixture.cs index 50d293473af..6bb204eb031 100644 --- a/src/NHibernate.Test/NHSpecificTest/NH1587/Fixture.cs +++ b/src/NHibernate.Test/NHSpecificTest/NH1587/Fixture.cs @@ -1,3 +1,4 @@ +using log4net; using log4net.Config; using log4net.Core; using NHibernate.Cfg; @@ -11,7 +12,7 @@ public class Fixture [Test] public void Bug() { - XmlConfigurator.Configure(); + XmlConfigurator.Configure(LogManager.GetRepository(typeof(Fixture).Assembly)); var cfg = new Configuration(); if (TestConfigurationHelper.hibernateConfigFile != null) cfg.Configure(TestConfigurationHelper.hibernateConfigFile); diff --git a/src/NHibernate.Test/NHSpecificTest/NH2386/Test.cs b/src/NHibernate.Test/NHSpecificTest/NH2386/Test.cs index 6aa0059f6bc..bb197062b1e 100644 --- a/src/NHibernate.Test/NHSpecificTest/NH2386/Test.cs +++ b/src/NHibernate.Test/NHSpecificTest/NH2386/Test.cs @@ -18,7 +18,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) protected override void OnTearDown() { if (memoryAppender != null) { - var repository = (Hierarchy) LogManager.GetRepository(); + var repository = (Hierarchy) LogManager.GetRepository(typeof(Test).Assembly); repository.Root.RemoveAppender(memoryAppender); memoryAppender = null; } diff --git a/src/NHibernate.Test/NHSpecificTest/NH2779/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2779/Fixture.cs index 469967ec081..d0cb079251c 100644 --- a/src/NHibernate.Test/NHSpecificTest/NH2779/Fixture.cs +++ b/src/NHibernate.Test/NHSpecificTest/NH2779/Fixture.cs @@ -20,7 +20,7 @@ public void Test() using (var session = OpenSession()) using (var tx = session.BeginTransaction()) - using (new LogSpy(LogManager.GetLogger("NHibernate"), Level.All)) // <-- Logging must be set DEBUG to reproduce bug + using (new LogSpy(LogManager.GetLogger(typeof(Fixture).Assembly, "NHibernate"), Level.All)) // <-- Logging must be set DEBUG to reproduce bug { Order order = session.Get("Order-1"); Assert.IsNotNull(order); diff --git a/src/NHibernate.Test/TestCase.cs b/src/NHibernate.Test/TestCase.cs index 70660863f0c..5da9a08cfd7 100644 --- a/src/NHibernate.Test/TestCase.cs +++ b/src/NHibernate.Test/TestCase.cs @@ -13,8 +13,10 @@ using NUnit.Framework; using NHibernate.Hql.Ast.ANTLR; using System.Collections.Concurrent; +using System.IO; using NUnit.Framework.Interfaces; using System.Text; +using log4net.Util; using static NUnit.Framework.TestContext; namespace NHibernate.Test @@ -68,7 +70,7 @@ protected virtual string MappingsAssembly static TestCase() { // Configure log4net here since configuration through an attribute doesn't always work. - XmlConfigurator.Configure(); + XmlConfigurator.Configure(LogManager.GetRepository(typeof(TestCase).Assembly)); } /// diff --git a/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs b/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs index f4dcaffa09e..5b233f74d5c 100644 --- a/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs +++ b/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs @@ -14,7 +14,7 @@ public class TypeFactoryFixture { public TypeFactoryFixture() { - log4net.Config.XmlConfigurator.Configure(); + log4net.Config.XmlConfigurator.Configure(LogManager.GetRepository(typeof(TypeFactoryFixture).Assembly)); } private static readonly ILog log = LogManager.GetLogger(typeof(TypeFactoryFixture)); diff --git a/src/NHibernate.Test/UtilityTest/ThreadSafeDictionaryFixture.cs b/src/NHibernate.Test/UtilityTest/ThreadSafeDictionaryFixture.cs index d5444f7a756..877b2d37a04 100644 --- a/src/NHibernate.Test/UtilityTest/ThreadSafeDictionaryFixture.cs +++ b/src/NHibernate.Test/UtilityTest/ThreadSafeDictionaryFixture.cs @@ -12,7 +12,7 @@ public class ThreadSafeDictionaryFixture { public ThreadSafeDictionaryFixture() { - log4net.Config.XmlConfigurator.Configure(); + log4net.Config.XmlConfigurator.Configure(LogManager.GetRepository(typeof(ThreadSafeDictionaryFixture).Assembly)); } private static readonly ILog log = LogManager.GetLogger(typeof(ThreadSafeDictionaryFixture)); diff --git a/src/NHibernate/Logging.cs b/src/NHibernate/Logging.cs index 7488ca0b26e..0dfd32e77fa 100644 --- a/src/NHibernate/Logging.cs +++ b/src/NHibernate/Logging.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Linq.Expressions; +using System.Reflection; using NHibernate.Util; namespace NHibernate @@ -222,16 +223,16 @@ public void WarnFormat(string format, params object[] args) public class Log4NetLoggerFactory: ILoggerFactory { private static readonly System.Type LogManagerType = System.Type.GetType("log4net.LogManager, log4net"); - private static readonly Func GetLoggerByNameDelegate; + private static readonly Func GetLoggerByNameDelegate; private static readonly Func GetLoggerByTypeDelegate; static Log4NetLoggerFactory() { - GetLoggerByNameDelegate = GetGetLoggerMethodCall(); + GetLoggerByNameDelegate = GetGetLoggerByNameMethodCall(); GetLoggerByTypeDelegate = GetGetLoggerMethodCall(); } public IInternalLogger LoggerFor(string keyName) { - return new Log4NetLogger(GetLoggerByNameDelegate(keyName)); + return new Log4NetLogger(GetLoggerByNameDelegate(typeof(Log4NetLoggerFactory).Assembly, keyName)); } public IInternalLogger LoggerFor(System.Type type) @@ -247,6 +248,15 @@ private static Func GetGetLoggerMethodCall() MethodCallExpression methodCall = Expression.Call(null, method, resultValue = keyParam); return Expression.Lambda>(methodCall, resultValue).Compile(); } + + private static Func GetGetLoggerByNameMethodCall() + { + var method = LogManagerType.GetMethod("GetLogger", new[] {typeof(Assembly), typeof(string)}); + ParameterExpression nameParam = Expression.Parameter(typeof(string), "name"); + ParameterExpression repositoryAssemblyParam = Expression.Parameter(typeof(Assembly), "repositoryAssembly"); + MethodCallExpression methodCall = Expression.Call(null, method, repositoryAssemblyParam, nameParam); + return Expression.Lambda>(methodCall, repositoryAssemblyParam, nameParam).Compile(); + } } public class Log4NetLogger: IInternalLogger