Log4net使用探究

来源:互联网 发布:广汽丰田一汽丰田 知乎 编辑:程序博客网 时间:2024/04/28 23:47

第一步:

通过Nuget package 搜索Apache Log4net安装

第二步:

在项目Global.asax文件中添加读取 配置文件

第三步:

编写Loghelper 文件

 1 public class LogNetHelper 2     { 3         private static ILog iLog { get; set; } 4         //默认Info等级 5         public static void Write(string message) 6         { 7             SetLogLevel(LogLevel.Info, null).Info(message); 8         } 9         //自定义10         public static ILog GetInstance(LogLevel level)11         {12             return SetLogLevel(level,null);13         }14         //是否需要重新加载配置文件使用15         private static ILog GetIlog(string configPath,string typeStr)16         {17             if (string.IsNullOrEmpty(configPath))18             {19                 iLog = log4net.LogManager.GetLogger(typeStr);20             }21             else22             {23                 iLog = log4net.LogManager.GetLogger(typeStr);24                 log4net.Config.XmlConfigurator.Configure(new FileInfo(configPath));25             }26             return iLog;27         }28         //封装变化29         private static ILog SetLogLevel(LogLevel level, string configPath)30         {31             ILog log;32             switch (level)33             {34                 case LogLevel.Fatal:35                     log = GetIlog(configPath, LogLevel.Fatal.ToString());36                     break;37                 case LogLevel.Error:38                     log = GetIlog(configPath, LogLevel.Error.ToString());39                     break;40                 case LogLevel.Warn:41                     log = GetIlog(configPath, LogLevel.Warn.ToString());42                     break;43                 case LogLevel.Debug:44                     log = GetIlog(configPath, LogLevel.Debug.ToString());45                     break;46                 case LogLevel.Info:47                     log = GetIlog(configPath, LogLevel.Info.ToString());48                     break;49                 default:50                     log = GetIlog(configPath, LogLevel.Info.ToString());51                     break;52             }53             return log;54         }55 56     }57     //日志等级58     public enum LogLevel59     {60         Fatal,61         Error,62         Warn,63         Debug,64         Info65     }66   67 } 

第四步:

 

  1 <?xml version="1.0" encoding="UTF-8"?>  2 <log4net debug="false">  3   4   <!--按日期分割日志文件 一天一个-->  5   <appender name="LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >  6   7     <!--是否续写-->  8     <param name="AppendToFile" value="true" />  9     <!--最小锁定模型以允许多个进程可以写入同一个文件--> 10     <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" /> 11     <param name="StaticLogFileName" value="true" /> 12     <!--保存路径--> 13     <param name="File" value="Logs\Error" /> 14     <param name="DatePattern" value="yyyy-MM-dd.LOG" /> 15     <param name="StaticLogFileName" value="false" /> 16     <param name="RollingStyle" value="Date" /> 17     <layout type="log4net.Layout.PatternLayout"> 18       <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" /> 19     </layout> 20   </appender> 21  22   <!--按日志容量分割日志文件 10KB一个--> 23   <appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender" > 24     <!--是否续写--> 25     <param name="AppendToFile" value="true" /> 26     <!--最小锁定模型以允许多个进程可以写入同一个文件--> 27     <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" /> 28  29     <param name="StaticLogFileName" value="true" /> 30  31     <!--按照文件的大小进行变换日志文件--> 32     <param name="RollingStyle" value="Size" /> 33     <param name="File" value="log.txt" /> 34     <!--单个文件最大数量 好像只有在 按Size分割时有效--> 35     <param name="MaximumFileSize" value="200KB"/> 36     <!--保留的log文件数量 超过此数量后 自动删除之前的   好像只有在 按Size分割时有效--> 37     <param name="MaxSizeRollBackups" value="2" /> 38  39     <param name="StaticLogFileName" value="false" /> 40     <layout type="log4net.Layout.PatternLayout"> 41       <param name="ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" /> 42     </layout> 43   </appender> 44  45   <!--按等级文件夹日志文件 一天一个--> 46   <appender name="Fatal" type="log4net.Appender.RollingFileAppender" > 47  48     <!--是否续写--> 49     <param name="AppendToFile" value="true" /> 50     <!--最小锁定模型以允许多个进程可以写入同一个文件--> 51     <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" /> 52     <param name="StaticLogFileName" value="true" /> 53     <!--保存路径--> 54     <param name="File" value="Logs\Fatal" /> 55     <param name="DatePattern" value="yyyy-MM-dd.LOG" /> 56     <param name="StaticLogFileName" value="false" /> 57     <param name="RollingStyle" value="Date" /> 58     <layout type="log4net.Layout.PatternLayout"> 59       <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" /> 60     </layout> 61     <filter type="log4net.Filter.LoggerMatchFilter"> 62       <loggerToMatch value="Fatal" /> 63     </filter> 64     <filter type="log4net.Filter.DenyAllFilter" /> 65   </appender> 66  67   <!--按等级文件夹日志文件 一天一个--> 68   <appender name="Error" type="log4net.Appender.RollingFileAppender" > 69  70     <!--是否续写--> 71     <param name="AppendToFile" value="true" /> 72     <!--最小锁定模型以允许多个进程可以写入同一个文件--> 73     <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" /> 74     <param name="StaticLogFileName" value="true" /> 75     <!--保存路径--> 76     <param name="File" value="Logs\Error" /> 77     <param name="DatePattern" value="yyyy-MM-dd.LOG" /> 78     <param name="StaticLogFileName" value="false" /> 79     <param name="RollingStyle" value="Date" /> 80     <layout type="log4net.Layout.PatternLayout"> 81       <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" /> 82     </layout> 83     <filter type="log4net.Filter.LoggerMatchFilter"> 84       <loggerToMatch value="Error" /> 85     </filter> 86     <filter type="log4net.Filter.DenyAllFilter" /> 87   </appender> 88  89   <!--按等级文件夹日志文件 一天一个--> 90   <appender name="Warn" type="log4net.Appender.RollingFileAppender" > 91  92     <!--是否续写--> 93     <param name="AppendToFile" value="true" /> 94     <!--最小锁定模型以允许多个进程可以写入同一个文件--> 95     <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" /> 96     <param name="StaticLogFileName" value="true" /> 97     <!--保存路径--> 98     <param name="File" value="Logs\Warn" /> 99     <param name="DatePattern" value="yyyy-MM-dd.LOG" />100     <param name="StaticLogFileName" value="false" />101     <param name="RollingStyle" value="Date" />102     <layout type="log4net.Layout.PatternLayout">103       <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />104     </layout>105     <filter type="log4net.Filter.LoggerMatchFilter">106       <loggerToMatch value="Warn" />107     </filter>108     <filter type="log4net.Filter.DenyAllFilter" />109   </appender>110 111   <!--按等级文件夹日志文件 一天一个-->112   <appender name="Debug" type="log4net.Appender.RollingFileAppender" >113 114     <!--是否续写-->115     <param name="AppendToFile" value="true" />116     <!--最小锁定模型以允许多个进程可以写入同一个文件-->117     <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />118     <param name="StaticLogFileName" value="true" />119     <!--保存路径-->120     <param name="File" value="Logs\Debug" />121     <param name="DatePattern" value="yyyy-MM-dd.LOG" />122     <param name="StaticLogFileName" value="false" />123     <param name="RollingStyle" value="Date" />124     <layout type="log4net.Layout.PatternLayout">125       <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />126     </layout>127     <filter type="log4net.Filter.LoggerMatchFilter">128       <loggerToMatch value="Debug" />129     </filter>130     <filter type="log4net.Filter.DenyAllFilter" />131   </appender>132 133   <!--按等级文件夹日志文件 一天一个-->134   <appender name="Info" type="log4net.Appender.RollingFileAppender" >135 136     <!--是否续写-->137     <param name="AppendToFile" value="true" />138     <!--最小锁定模型以允许多个进程可以写入同一个文件-->139     <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />140     <param name="StaticLogFileName" value="true" />141     <!--保存路径-->142     <param name="File" value="Logs\Info" />143     <param name="DatePattern" value="yyyy-MM-dd.LOG" />144     <param name="StaticLogFileName" value="false" />145     <param name="RollingStyle" value="Date" />146     <layout type="log4net.Layout.PatternLayout">147       <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />148     </layout>149     <filter type="log4net.Filter.LoggerMatchFilter">150       <loggerToMatch value="Info" />151     </filter>152     <filter type="log4net.Filter.DenyAllFilter" />153   </appender>154   155   156   157   158   159   160   161   <root>162     <level value="ALL" /> 163     <!--启用按等级文件夹分割-->164     <appender-ref ref="Fatal" />165     <appender-ref ref="Error" />166     <appender-ref ref="Warn" />167     <appender-ref ref="Debug" />168     <appender-ref ref="Info" />169     170     <!--启用按日期分割-->171     <!--<appender-ref ref="LogFileAppenderByDate" />-->172     173     <!--启用按容量分割-->174     <!--<appender-ref ref="LogFileAppenderBySize" />-->175     <!--启用保存到数据库-->176     <!--<appender-ref ref="AdoNetAppender" />-->177   </root>178 179 </log4net>

<root> 实际上就是一个根logger,所有其它logger都默认继承它,

  • appender-ref 零个或多个 需要引用的appender
  • level 记录级别

<appender> 定义日志的输出方式 name属性必须唯一,type属性必须指定

<layout> 日志布局,type属性必须指定

<filter> 过滤器,type属性必须指定

 

更多需要参考资料:

Apache Log4net 官方文档建议通读 

csdn博友文章

 

原创粉丝点击