1

私は次のコードを持っています:

    public Log4NetLogger()
        : base(LogLevel.Debug)
    {
        if(!LogManager.GetRepository().Configured)
        {
            lock(mLocker)
            {
                if(!LogManager.GetRepository().Configured)
                {
                    XmlConfigurator.Configure();
                }
            }
        }

        mLog4NetInstance = LogManager.GetLogger(typeof(Log4NetLogger));
    }

次のweb.configを使用します。

  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\MaMLog_" />
      <appendToFile value="true" />
      <StaticLogFileAppName value="false" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMMdd_dddd'.log'" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{dd MMM yyyy HH:mm:ss,fff} [%thread] -() %message%newline" />
      </layout>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    </appender>
    <logger name="MyLog1">
      <level value="Debug" />
      <appender-ref ref="RollingLogFileAppender" />
    </logger>
    <logger name="MyLog2">
      <level value="Debug" />
      <appender-ref ref="RollingLogFileAppender" />
    </logger>
  </log4net>

コードはどのようにしてロガー名を知っていますか?もしそうなら?

4

1 に答える 1

3

使用しているので

mLog4NetInstance = LogManager.GetLogger(typeof(Log4NetLogger));

その場合、ロガー名typeof(Log4NetLogger).FullNameは通常、次の形式の値になります。YourNameSpace.Log4NetLogger

この例では何もログに記録されません。これは、その名前のロガーがなく、フォールバックするルートセクションがないためです。

<root>
    <level value="DEBUG" />
    <appender-ref ref="RollingLogFileAppender" />
</root>
于 2012-11-15T12:45:32.633 に答える