【问题标题】:wrong file and line in log4net wrapperlog4net 包装器中的错误文件和行
【发布时间】:2013-02-13 11:28:50
【问题描述】:

我写了一个 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; } }

    ...

}

问题是我在记录时得到的行和文件是包装的,而不是消息的实际位置。

【问题讨论】:

  • 好像不是一个很有用的类....
  • 这就是你不应该包装 log4net 的原因之一。
  • 感谢您的回复。我在以下 [link][1] [1] 中找到了解决方案:stackoverflow.com/questions/157232/…
  • @MitchWheat:嗯,有时需要日志服务的类不应该依赖于 log4net,原因有很多。因此,直接使用 log4net 的选项落空了。但是,如果你不包装它,你建议什么?

标签: c# log4net wrapper


【解决方案1】:

这是设计使然,如果您对首先引发异常的行和文件感兴趣,则应该记录异常对象或其堆栈跟踪成员,如果您已配置 log4net 文件附加程序以显示文件和行从哪里写入消息,找到包装器是正常的,但是在记录异常和堆栈跟踪时,您会找到正确的内容。

在我们的附加程序中,我们有以下内容,因此我们甚至不显示包装类名称或文件/行...

<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>

【讨论】:

    猜你喜欢
    • 2019-07-30
    • 1970-01-01
    • 2021-07-20
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2019-12-03
    • 2012-07-05
    相关资源
    最近更新 更多