孤行Blog

在服务以及Asp.net网站中配置Log4net

Log4net是一个开源的记录日志的插件,在使用时需要程序员对其进行配置。

该配置分两种情况(服务&网站)

1.服务(以及控制台应用程序)下的配置:

       1.1 将log4net.config放置在应用程序生成目录(debug/release)下,具体内容如下(列出了主要功能,可根据徐求自行选择配置):

View Code
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
        <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="ERROR" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />
        <File value="Logs\err.log" />
        <PreserveLogFileNameExtension value="true" />
        <!--日志文件名开头-->
        <File value="Logs\err.log" />
        <!--是否追加到文件-->
        <appendToFile value="true" />
        <!--混合使用日期和文件大小变换日志文件名-->
        <rollingStyle value="Composite" />
        <!--日期的格式-->
        <datePattern value="yyyyMMdd" />
        <!--最大变换数量-->
        <maxSizeRollBackups value="1000" />
        <!--最大文件大小-->
        <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
        <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="INFO" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />
        <File value="Logs\info.log" />
        <PreserveLogFileNameExtension value="true" />
      <!--是否追加到文件-->
      <appendToFile value="true" />
      <!--混合使用日期和文件大小变换日志文件名-->
      <rollingStyle value="Composite" />
      <!--日期的格式-->
      <datePattern value="yyyyMMdd" />
      <!--最大变换数量-->
      <maxSizeRollBackups value="1000" />
      <!--最大文件大小-->
      <maximumFileSize value="10MB" />
      
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
        <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="DEBUG" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />
        <File value="Logs\debug.log" />
        <PreserveLogFileNameExtension value="true" />
      <!--是否追加到文件-->
      <appendToFile value="true" />
      <!--混合使用日期和文件大小变换日志文件名-->
      <rollingStyle value="Composite" />
      <!--日期的格式-->
      <datePattern value="yyyyMMdd" />
      <!--最大变换数量-->
      <maxSizeRollBackups value="1000" />
      <!--最大文件大小-->
      <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">
        <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="INFO" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />
        <File value="Logs\perf.log" />
        <PreserveLogFileNameExtension value="true" />
        <!--是否追加到文件-->
        <appendToFile value="true" />
        <!--混合使用日期和文件大小变换日志文件名-->
        <rollingStyle value="Composite" />
        <!--日期的格式-->
        <datePattern value="yyyyMMdd" />
        <!--最大变换数量-->
        <maxSizeRollBackups value="1000" />
        <!--最大文件大小-->
        <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %logger - %message%newline" />
      </layout>
    </appender>
  
    <root>
        <level value="ALL" />
        <appender-ref ref="errorAppender" />
        <appender-ref ref="infoAppender" />
        <appender-ref ref="debugAppender" />
    </root>
    <logger name="Performance" additivity="false">
      <level value="ALL" />
      <appender-ref ref="perfAppender" />
    </logger>
    <logger name="WeiXinApp" additivity="false">
      <level value="ALL" />
      <appender-ref ref="errorAppender" />
        <appender-ref ref="infoAppender" />
        <appender-ref ref="debugAppender" />
    </logger>
</log4net>

 

       1.2 在需要记录日志的程序集中引用log4net.dll文件。

 

       1.3 在程序集中添加一个LogProvide类:

View Code
    class LogProvider
    {
        private static ILog _logger;

        public static ILog GetLogger()
        {
            if (_logger == null)
            {
                string logConfig = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config");
                XmlConfigurator.Configure(new FileInfo(logConfig));
                _logger = LogManager.GetLogger("TestSplit");
            }
            return _logger;
        }
    }

 

  1.4 调用LogProvide. GetLogger获取_logger实例,并通过实例提供的方法记录日志。

 

2.Asp.Net网站环境下的配置:

  1.1 在WebConfig中的Configuration下添加如下内容:

View Code
<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>

 

  1.2将上面的log4net.config中的log4net节点之间的部分追加到上面的节点之后:

View Code
复制代码
<log4net>
    <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
        <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="ERROR" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />
        <File value="Logs\err.log" />
        <PreserveLogFileNameExtension value="true" />
        <!--日志文件名开头-->
        <File value="Logs\err.log" />
        <!--是否追加到文件-->
        <appendToFile value="true" />
        <!--混合使用日期和文件大小变换日志文件名-->
        <rollingStyle value="Composite" />
        <!--日期的格式-->
        <datePattern value="yyyyMMdd" />
        <!--最大变换数量-->
        <maxSizeRollBackups value="1000" />
        <!--最大文件大小-->
        <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
        <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="INFO" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />
        <File value="Logs\info.log" />
        <PreserveLogFileNameExtension value="true" />
      <!--是否追加到文件-->
      <appendToFile value="true" />
      <!--混合使用日期和文件大小变换日志文件名-->
      <rollingStyle value="Composite" />
      <!--日期的格式-->
      <datePattern value="yyyyMMdd" />
      <!--最大变换数量-->
      <maxSizeRollBackups value="1000" />
      <!--最大文件大小-->
      <maximumFileSize value="10MB" />
      
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
        <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="DEBUG" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />
        <File value="Logs\debug.log" />
        <PreserveLogFileNameExtension value="true" />
      <!--是否追加到文件-->
      <appendToFile value="true" />
      <!--混合使用日期和文件大小变换日志文件名-->
      <rollingStyle value="Composite" />
      <!--日期的格式-->
      <datePattern value="yyyyMMdd" />
      <!--最大变换数量-->
      <maxSizeRollBackups value="1000" />
      <!--最大文件大小-->
      <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">
        <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="INFO" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />
        <File value="Logs\perf.log" />
        <PreserveLogFileNameExtension value="true" />
        <!--是否追加到文件-->
        <appendToFile value="true" />
        <!--混合使用日期和文件大小变换日志文件名-->
        <rollingStyle value="Composite" />
        <!--日期的格式-->
        <datePattern value="yyyyMMdd" />
        <!--最大变换数量-->
        <maxSizeRollBackups value="1000" />
        <!--最大文件大小-->
        <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %logger - %message%newline" />
      </layout>
    </appender>
  
    <root>
        <level value="ALL" />
        <appender-ref ref="errorAppender" />
        <appender-ref ref="infoAppender" />
        <appender-ref ref="debugAppender" />
    </root>
    <logger name="Performance" additivity="false">
      <level value="ALL" />
      <appender-ref ref="perfAppender" />
    </logger>
    <logger name="WeiXinApp" additivity="false">
      <level value="ALL" />
      <appender-ref ref="errorAppender" />
        <appender-ref ref="infoAppender" />
        <appender-ref ref="debugAppender" />
    </logger>
</log4net>
复制代码

 

       1.3 在网站中引用log4net.dll插件,并在Global中作如下配置: 

View Code
void Application_Start(object sender, EventArgs e)
{
    // 在应用程序启动时运行的代码
    XmlConfigurator.Configure();
}

 

  

  1.4 在需要记录日志的程序集中引用log4net.dll文件。

 

  1.5 在程序集中添加一个LogProvide类

View Code
复制代码
    class LogProvider
    {
        private static ILog _logger;

        public static ILog GetLogger()
        {
            if (_logger == null)
            {
                _logger = LogManager.GetLogger("TestSplit");
            }
            return _logger;
        }
    }
复制代码

 

  1.6 调用LogProvide. GetLogger获取_logger实例,并通过实例提供的方法记录日志。

posted on 2013-03-05 16:34  孤行  阅读(228)  评论(0编辑  收藏  举报