【问题标题】:default log4net configuration默认 log4net 配置
【发布时间】:2012-11-15 11:18:47
【问题描述】:

我有以下代码:

    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>

代码如何知道记录器名称?如果有的话?

【问题讨论】:

    标签: c# asp.net web-config log4net


    【解决方案1】:

    因为你正在使用

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

    那么记录器名称将是typeof(Log4NetLogger).FullName 的值,通常格式为YourNameSpace.Log4NetLogger

    在此示例中不会记录任何内容,因为您没有具有该名称的记录器,并且您没有可以回退到的根部分,例如

    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingLogFileAppender" />
    </root>
    

    【讨论】:

    • YourNameSpace.Log4NetLogger --> 如果我不想使用&lt;root&gt;,那么我必须为我的 sln 中的每个程序集定义一个记录器,或者启动项目的程序集是否足够?
    • 如果您使用 GetLogger(typeof(xxx)),那么您可以使用命名空间的第一部分(不必与程序集名称相关)。如果您的命名空间是 MyCompany.MyProduct,那么 log4net 将为 MyCompany.MyProduct.Log4NetLogger 寻找一个记录器,如果没有找到,它将为 MyCompany.MyProduct 寻找一个记录器,然后是 MyCompany,最后是根记录器。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 2016-09-09
    相关资源
    最近更新 更多