3

私のweb.configには次のものがあります:

<log4net>
    <appender name="mainLog"
       type="log4net.Appender.FileAppender">
      <file value="Log/Log.txt" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="linqLog"
      type="log4net.Appender.FileAppender">
      <file value="Log/Log.txt" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message%newline" />
      </layout>
    </appender>

    <logger name="MainLogger">
      <level value="ALL" />
      <appender-ref ref="mainLog" />
    </logger>
    <logger name="LinqLogger">
      <level value="ALL" />
      <appender-ref ref="linqLog" />
    </logger>
  </log4net>

「mainLog」と呼ばれる最初のアペンダーが機能しています。しかし、「linqLog」と呼ばれる 2 番目のものはそうではありません。「mainLog」をコメントアウトすると、「linqLog」が機能します。

私の Global.asax ファイルには次のものがあります。

protected void Application_Start(object sender, EventArgs e)
        {
            XmlConfigurator.Configure();
        }

これが私がそれらを呼び出す方法です:

public static void LogMessage(string message, string loggerName)
        {
            ILog log = LogManager.GetLogger(loggerName);
            log.Info(string.Format(message));
        }


LogMessage("My test message for MainLogger", "MainLogger");
LogMessage("My test message for LinqLogger", "LinqLogger");

私が間違ったことをしたアイデアはありますか?

4

2 に答える 2

2

指定しない限り、2 つのファイル アペンダーが同じファイルにログを記録することはできません。lockingModel

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

http://logging.apache.org/log4net/release/config-examples.htmlを参照してください。

于 2012-09-28T20:01:02.710 に答える
0

Log4net は同じファイルへの 2 つのアペンダ書き込みをサポートしていますが、ロック モデルを「MinimalLock」に設定する必要があります。

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
于 2012-09-28T19:59:38.640 に答える