2

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

    ...

}

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

4

1 回答 1

2

这是设计使然,如果您对首先引发异常的行和文件感兴趣,则应记录异常对象或其堆栈跟踪成员,如果您已配置 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>

于 2013-02-13T11:41:24.860 回答