zoukankan      html  css  js  c++  java
  • 首次在C#程序中用log4net

    众所周知log4net是一个很强大的日志管理库,我自己也用了下,这里作下记录:

    首先新建一个项目Log4NetTest,然后将log4net.dll程序集添加引用至Log4NetTest。

    然后在Log4NetTest项目中的Properties -> AssemblyInfo.cs文件中添加:[assembly:log4net.Config.XmlConfigurator(Watch = true)],如图:

    这句代码也可以添加到名称空间前面,但是这种方式log4net就只局限于该名称空间内可用,其它名称空间要用也要写这句代码,故可以直接加在AssemblyInfo.cs中作用于整个项目。

    然后在App.config中写相应的log4net所需的配置信息,写好后就可以在Main函数中用代码:

    ILog log = LogManager.GetLogger(typeof (Program));  // typeof(Program)的作用貌似是与 引用当前程序集有关。
                log.Error("ErrMsg", new Exception("Error异常。"));
                log.Fatal("FatalMsg", new Exception("Fatal异常。"));
                log.Info("InfoMsg", new Exception("Info信息。"));
                log.Debug("DebugMsg", new Exception("Debug信息。"));
                log.Warn("WarnMsg", new Exception("我怎么"));
                Console.WriteLine("Log It's Ok");
                Console.ReadKey();

    如果想将log4net的配置写在一个单独的.config文件中,如log4net.config,则需要

    修改[assembly:log4net.Config.XmlConfigurator(Watch = true)]为:[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]。

    且要将log4net.config文件设置为复制到输出目录。(推荐将log4net的配置写在单独的配置文件中)

    log4net.config中的配置信息可为:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <configSections>
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
        </configSections>
    
        <log4net>
    
            <root>
                <level value="ALL" />
                <appender-ref ref="InfoAppender" />
                <appender-ref ref="WarnAppender" />
                <appender-ref ref="ErrorAppender" />
                <appender-ref ref="FatalAppender" />
                <appender-ref ref="DebugAppender" />
            </root>
    
            <!-- 输出模式定义 -->
            <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
                <!--日志路径: 兼容相对路径和绝对路径,此语句等价于<File value="Logs"/> -->
                <param name= "File" value= "Logs"/>
                <!--是否是向文件中追加日志-->
                <param name= "AppendToFile" value= "true"/>
                <!--保留天数-->
                <param name= "MaxSizeRollBackups" value= "-1"/>
                <!--日志文件名是否固定不变的-->
                <param name= "StaticLogFileName" value= "false"/>
                <!--日志文件名格式为:2017-01-12_Info.log-->
                <param name= "DatePattern" value= "yyyy-MM-dd&quot;_Info.log&quot;"/>
                <!--日志根据日期滚动-->
                <param name= "RollingStyle" value= "Date"/>
           <!-- 每条记录的头和尾 -->
           <header value="{*" />
           <footer value="*}" />  <!-- 写入记录文件时的格式%p应该指模式如WARN,%m应该指Message值,%n应该是换行的意思。接着输出Exception --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 -->        <!-- FATAL > ERROR > WARN > INFO > DEBUG -->  <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="INFO" /> <levelMax value="INFO" /> </filter> </appender> <appender name="WarnAppender" type="log4net.Appender.RollingFileAppender"> <File value= "Logs"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <!-- 能保存的文件最大值,假设某次输出后该文件如mm_warn.log的大小将会超过最大值3KB,则此次输出仍有效,但是下次输出则会将该文件重命名为mm_warn.log.1,且生成一个新的mm_warn.log文件以供记录输出内容。 --> <param name="MaximumFileSize" value="3KB" /> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyy-MM-dd&quot;_Warn.log&quot;"/> <param name= "RollingStyle" value= "Composite"/> <!-- 写入记录文件时的格式 --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="WARN" /> <levelMax value="WARN" /> </filter> </appender> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name= "File" value= "Logs"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <!-- 能保存的文件最大值 --> <param name="MaximumFileSize" value="1MB" /> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyy-MM-dd&quot;_Error.log&quot;"/> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR" /> <levelMax value="ERROR" /> </filter> </appender> <appender name="FatalAppender" type="log4net.Appender.RollingFileAppender"> <param name= "File" value= "Logs"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyy-MM-dd&quot;_Fatal.log&quot;"/> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="FATAL" /> <levelMax value="FATAL" /> </filter> </appender> <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> <param name= "File" value= "Logs"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyy-MM-dd&quot;_Debug.log&quot;"/> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="DEBUG" /> <levelMax value="DEBUG" /> </filter> </appender> </log4net> </configuration>
  • 相关阅读:
    C# where用法解析
    C# 判断两张图片是否一致,极快速
    C# 文件过滤器filter
    C# 获取Image图片格式
    C# 中base和this关键字
    C# Http访问帮助类,支持get post请求文件下载 [
    C# 最小化到托盘,托盘右击菜单显示
    C# 导出资源文件到硬盘
    C# 线程安全与 lock锁
    DAO设计模式(转)
  • 原文地址:https://www.cnblogs.com/silentdoer/p/6290481.html
Copyright © 2011-2022 走看看