Log4Net的入门使用

来源:互联网 发布:网络总攻是什么意思 编辑:程序博客网 时间:2024/06/05 11:29

一 下载Log4Net,找到相应版本的log4net.dll

官方地址是:http://logging.apache.org/log4net/,然后找到下载页面,下载压缩包:

第二步 添加引用

第三步  在配置文件中写参数:(我这里是winform,所以在app.config)

有两种配置方法:1是分等级分别写入不同的日志文件,2是不论什么等级都记录到一块一个日志文件内:

分等级的配置:

 <log4net>    <appender name ="Info" type="log4net.Appender.RollingFileAppender" >    <file value ="Syslog\\"/>      <!--file就是规定下目录,比如文中是要放入Syslog文件夹,如果没有程序会自动创建-->    <appenderToFile value="true"/>    <rollingStyle value="Date"/>    <datePattern value="yyyyMM\\yyyyMMdd'.Info'"/>    <staticLogFileName value ="false"/>    <!--staticLogFileName 是true的话文件名称只按照file值走,如果是false那么是在file值后面加上datepattern值-->    <maximumFileSize value ="2MB"/>    <MaxSizeRollBackups  value="100"/>    <layout type="log4net.Layout.PatternLayout">      <conversionPattern value="%newline %n记录时间:%d{yyy-MM-dd HH:mm:ss }, %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%n"/>    </layout>    <filter type="log4net.Filter.LevelRangeFilter">      <levelMin value="Info" />      <levelMax value="Info" />    </filter>    </appender>    <!--一个log4net可以对照多个appender标签,每个appender标签要不同的命名,然后在root里appender-ref对照起来,配置多个appender就可以按照不同等级分类写入到不同文件中-->    <appender name="ERROR" type="log4net.Appender.RollingFileAppender">      <file value ="SysLog\\"/>      <appendToFile value="true"/>      <rollingStyle value="Date"/>      <datePattern value="yyyyMM\\yyyyMMdd'.ERROR'"/>      <staticLogFileName value ="false"/>      <maximumFileSize value="2MB"/>      <param name="MaxSizeRollBackups" value="100"/>      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%newline %n记录时间:%d{yyy-MM-dd HH:mm:ss }, %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%n"/>      </layout>      <filter type="log4net.Filter.LevelRangeFilter">        <levelMin value="WARN" />        <levelMax value="FATAL" />      </filter>    </appender>      <root>      <level value="ALL"/>      <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->      <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->      <appender-ref ref="Info" />      <appender-ref ref="ERROR" />    </root>   </log4net>

不论什么等级都记录到一块一个日志文件内:

<log4net>    <!--一个log4net可以对照多个appender标签,每个appender标签要不同的命名,然后在root里appender-ref对照起来,配置多个appender就可以按照不同等级分类写入到不同文件中-->    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">      <file value ="SysLog\\"/>      <appendToFile value="true"/>      <rollingStyle value="Date"/>      <datePattern value="yyyyMM\\yyyyMMdd'.ERROR'"/>      <staticLogFileName value ="false"/>      <maximumFileSize value="2MB"/>      <param name="MaxSizeRollBackups" value="100"/>      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%newline %n记录时间:%d{yyy-MM-dd HH:mm:ss }, %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%n%message%n"/>      </layout>        </appender>    <root>      <level value="ALL"/>      <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->      <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->      <appender-ref ref="RollingFileAppender" />    </root>    <logger name="Logging">    </logger>  </log4net>

注意:filter标签可以设置level等级,多个或一个appender就靠它来区分了。

然后在在  app.config 的<configSections>标记中添加:
 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
第四步:在\Properties\AssemblyInfo.cs中添加监视:
[assembly: log4net.Config.XmlConfiguratorAttribute(Watch = true)]

第五步:根据需要自定义一个类做辅助:枚举一下:

  class Syslog    {        public enum Level //这里等级根据需要枚举        {            Debug,            Info,            Warn,            Error,            Fatal        }        private static  log4net.ILog ILog = log4net.LogManager.GetLogger("Logging");               public static void Register( Level Level,Type t, Exception ex )//这里也可以使用string ;Type 根据自己需要        {            if (Level != null)            {                switch (Level)                {                    case Level.Debug:                        ILog.Debug(t, ex );                        break;                    case Level.Info:                        ILog.Info(t, ex);                        break;                    case Level.Warn:                        ILog.Warn(t, ex);                        break;                    case Level.Error:                        ILog.Error(t, ex);                        break;                    case Level.Fatal:                        ILog.Fatal(t, ex);                        break;                }            }        }    }

效果:如何归类方便就根据自己需要进行配置参数就行。


附:

日志的等级,它们由高到底分别为:

OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL ,向上兼并,比如写info那么debug就不会再生效,写off全不报,写all都报

等级程度介绍(摘抄的):

FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。

ERROR(一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。

WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。

INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。

DEBUG (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。


也是在跟帖学习的,感谢:

http://www.cnblogs.com/jiajinyi/p/5884930.html

原创粉丝点击