私は、「ログ」と「ログ確認」という異なるテーブルに挿入するように設定されている設定ファイルに2つのアペンダーを持っていますが、どちらも両方のテーブルにロガーが挿入されています。log4net異なるアペンダーが異なるテーブルを挿入する
<log4net debug="true">
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[ClientIp],[Username],[Controller],[Action],[Parameters]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @clientip, @username, @controller, @action, @parameters)" />
...
</appender>
<appender name="AdoNetAppenderForFirms" type="log4net.Appender.AdoNetAppender" additivity="false">
<bufferSize value="1" />
<commandText value="INSERT INTO LogFirms ([Date],[Thread],[Level],[Logger],[Message],[Exception],[ClientIp],[Username],[Controller],[Action],[Parameters]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @clientip, @username, @controller, @action, @parameters)" />
...
</appender>
<root>
<level value="ALL" />
<appender-ref ref="AdoNetAppender" />
<appender-ref ref="AdoNetAppenderForFirms" />
</root>
</log4net>
ここにはロガークラスがあります。
public static class Logger
{
private static ILog log { get; set; }
private static ILog logFirms { get; set; }
static Logger()
{
log = LogManager.GetLogger("AdoNetAppender");
logFirms = LogManager.GetLogger("AdoNetAppenderForFirms");
}
public static void Error(string controller, string action, string parameters, object msg, Exception ex)
{
if (controller == "AccountController" && logFirms.IsErrorEnabled)
{
logFirms.Error(msg, ex);
}
else if (log.IsErrorEnabled)
{
log.Error(msg, ex);
}
}
問題は構成である必要がありますので、コントローラで見られるエラーが、ありません...私は検索し
加法=「false」を
プロパティを追加してみました「AdoNetAppenderForFirms」要素に追加しましたが、それは何も変更されませんでした。あなたはこれを解決するためのアドバイスをお持ちですか?
コンフィグがOKに見えます。子ロガーの場合と同じように 'additivity'は必要ありませんが、あなたはrootだけを定義しています。ロガークラスにブレークポイントを設定し、各ロガーに接続されているベンダーを調べて、OKの場合はlog4netの内部デバッグを有効にして、手がかりを調べることができます。 – stuartd