我写了一个log4net包装器
public class Log4NetWrapper : ILogger
{
private readonly log4net.ILog logger;
public Log4NetWrapper(string loggerName)
{
logger = log4net.LogManager.GetLogger(loggerName);
}
public void Debug(string message, params object[] values)
{
logger.DebugFormat(message, values);
}
public bool IsDebugEnabled {get { return logger.IsDebugEnabled; } }
...
}
问题是我记录的行和文件是包装器而不是消息的实际位置。
答案 0 :(得分:2)
这是设计的,如果你对行和文件感兴趣,首先应该记录异常对象或其stacktrace成员,如果你已经配置了log4net文件appender来显示文件和行在写入消息的地方,您可以找到包装器,但在记录异常和堆栈跟踪时,您会找到正确的内容。
在我们的appender中我们有以下内容,因此我们甚至不显示包装类名称或文件/行...
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<threshold value="ALL"/>
<immediateFlush>true</immediateFlush>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<encoding value="utf-8"/>
<file value="D:\Axis\RPP\Logs\myLogFile.log" />
<appendToFile value="true"/>
<rollingStyle value="Date" />
<maxSizeRollBackups value="30" />
<maximumFileSize value="25MB" />
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%property{log4net:HostName}] - %username%newline%utcdate - %-5level - %message%newline"/>
</layout>
</appender>
<root>
<priority value="ALL"/>
<appender-ref ref="FileAppender"/>
</root>