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>
<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 に答える