zoukankan      html  css  js  c++  java
  • Log4net使用探究

    第一步:

    通过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             else
    22             {
    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 LogLevel
    59     {
    60         Fatal,
    61         Error,
    62         Warn,
    63         Debug,
    64         Info
    65     }
    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="LogsError" />
     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="LogsFatal" />
     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="LogsError" />
     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="LogsWarn" />
     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="LogsDebug" />
    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="LogsInfo" />
    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博友文章

  • 相关阅读:
    Qt音视频开发11-ffmpeg常用命令
    Qt音视频开发10-ffmpeg控制播放
    Qt音视频开发9-ffmpeg录像存储
    Intellij IDEA 与maven 版本不符 Unable to import maven project See logs for details: No implementation for org.apache.maven.model.path.PathTranslator was bound
    Java Map 遍历史上最全
    java new date 结果与操作系统时间相差8小时处理解决方法
    elasticsearch报错
    Pytorch-基于Transformer的情感分类
    Pytorch-LSTM+Attention文本分类
    PHP FFI调用go,居然比go还快
  • 原文地址:https://www.cnblogs.com/workcn/p/7358910.html
Copyright © 2011-2022 走看看