我已经为log4net做了一个包装器,但它有一个非常特殊的行为。我正在使用NET Core 2并且在我的测试类中,只有当我从记录器内部向记录器添加另一个调用时,记录器才能工作(请参阅我的代码中的注释)。如果我再次在控制台应用程序中尝试该代码,则不会记录。
这是我的代码:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Logger.configuration.xml", Watch = true)]
namespace MyCreatives.Common.Logging
{
public static class LoggerAdapter
{
public static ILogger Logger = new Logger();
}
}
internal class Logger : ILogger
{
private static ILog _log => LogManager.GetLogger(getClassType());
#region Log methods
public void LogDebug(string message, Exception e = null)
{
_log.Debug(message, e);
}
public void LogError(string message, Exception e = null)
{
LoggerAdapter.Logger.LogInfo("info");//if I remove this it won't log
_log.Error(message, e);
}
public void LogFatal(string message, Exception e = null)
{
_log.Fatal(message, e);
}
public void LogInfo(string message, Exception e = null)
{
_log.Info(message, e);
}
public void LogWarning(string message, Exception e = null)
{
_log.Warn(message, e);
}
#endregion
}
配置文件:
<log4net>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingFile" />
</root>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="example.log" />
<appendToFile value="true" />
<maximumFileSize value="10MB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level %thread %logger - %message%newline" />
</layout>
</appender>
</log4net>
这里有什么问题,我该如何解决这个问题?