首页 > 代码库 > log4net将日志进行分类,保存到不同的目录当中

log4net将日志进行分类,保存到不同的目录当中

1、新建Logs的Class类;代码如下:

  1  public class ApiLogs  2     {  3         public static int Log_Level { get; set; }  4         private static bool initialized = false;  5         private static readonly ILog log = LogManager.GetLogger("ApiLogs");  6         static ApiLogs()  7         {  8             if (!initialized)  9             { 10                 Initialize(); 11                 initialized = true; 12             } 13         } 14         private static void Initialize() 15         { 16  17             FileInfo fi = new FileInfo(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 18             if (fi.Exists) 19             { 20                 XmlConfigurator.ConfigureAndWatch(fi); 21             } 22             if (!LogManager.GetRepository().Configured) 23             { 24                 string filePath = (Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetCallingAssembly().GetName().CodeBase).LocalPath), "Carpa.config")); 25                 fi = new FileInfo(filePath); 26                 if (fi.Exists) 27                 { 28                     XmlConfigurator.ConfigureAndWatch(fi); 29                 } 30                 else 31                 { 32                     Trace.TraceWarning("配置文件 {0} 不存在", fi.FullName); 33                 } 34             } 35         } 36  37  38         /// <summary> 39         /// 调试输出 40         /// </summary> 41         /// <param name="message"></param> 42         public static void Debug(object message) 43         { 44             if (Log_Level >= 4) 45             { 46                 log.Debug(message); 47             } 48         } 49  50         /// <summary> 51         /// 调试输出 52         /// </summary> 53         /// <param name="message"></param> 54         /// <param name="exception"></param> 55         public static void Debug(object message, Exception exception) 56         { 57             if (Log_Level >= 4) 58             { 59                 log.Debug(message, exception); 60             } 61         } 62  63         /// <summary> 64         /// 格式化调试输出 65         /// </summary> 66         /// <param name="format"></param> 67         /// <param name="args"></param> 68         public static void DebugFormat(string format, params object[] args) 69         { 70             if (Log_Level >= 4) 71             { 72                 log.DebugFormat(format, args); 73             } 74         } 75  76         /// <summary> 77         /// 信息输出 78         /// </summary> 79         /// <param name="message"></param> 80         public static void Info(object message) 81         { 82             if (Log_Level >= 2) 83             { 84                 log.Info(message); 85             } 86         } 87  88         /// <summary> 89         /// 信息输出 90         /// </summary> 91         /// <param name="message"></param> 92         /// <param name="exception"></param> 93         public static void Info(object message, Exception exception) 94         { 95             if (Log_Level >= 2) 96             { 97                 log.Info(message, exception); 98             } 99         }100 101         /// <summary>102         /// 格式化信息输出103         /// </summary>104         /// <param name="format"></param>105         /// <param name="args"></param>106         public static void InfoFormat(string format, params object[] args)107         {108             if (Log_Level >= 2)109             {110                 log.InfoFormat(format, args);111             }112         }113 114         /// <summary>115         /// 警告输出116         /// </summary>117         /// <param name="message"></param>118         public static void Warn(object message)119         {120             if (Log_Level >= 3)121             {122                 log.Warn(message);123             }124         }125 126         /// <summary>127         /// 警告输出128         /// </summary>129         /// <param name="message"></param>130         /// <param name="exception"></param>131         public static void Warn(object message, Exception exception)132         {133             if (Log_Level >= 3)134             {135                 log.Warn(message, exception);136             }137         }138 139         /// <summary>140         /// 格式化警告输出141         /// </summary>142         /// <param name="format"></param>143         /// <param name="args"></param>144         public static void WarnFormat(string format, params object[] args)145         {146             if (Log_Level >= 3)147             {148                 log.WarnFormat(format, args);149             }150         }151 152         /// <summary>153         /// 错误输出154         /// </summary>155         /// <param name="message"></param>156         public static void Error(object message)157         {158             if (Log_Level >= 1)159             {160                 log.Error(message);161             }162         }163 164         /// <summary>165         /// 错误输出166         /// </summary>167         /// <param name="message"></param>168         /// <param name="exception"></param>169         public static void Error(object message, Exception exception)170         {171             if (Log_Level >= 1)172             {173                 log.Error(message, exception);174             }175         }176 177         /// <summary>178         /// 格式化错误输出179         /// </summary>180         /// <param name="format"></param>181         /// <param name="args"></param>182         public static void ErrorFormat(string format, params object[] args)183         {184             if (Log_Level >= 1)185             {186                 log.ErrorFormat(format, args);187             }188         }189 190         /// <summary>191         /// 致命输出192         /// </summary>193         /// <param name="message"></param>194         public static void Fatal(object message)195         {196             log.Fatal(message);197         }198 199         /// <summary>200         /// 致命输出201         /// </summary>202         /// <param name="message"></param>203         /// <param name="exception"></param>204         public static void Fatal(object message, Exception exception)205         {206             log.Fatal(message, exception);207         }208 209         /// <summary>210         /// 格式化致命输出211         /// </summary>212         /// <param name="format"></param>213         /// <param name="args"></param>214         public static void FatalFormat(string format, params object[] args)215         {216             log.FatalFormat(format, args);217         }218 219 220 221 222         /// <summary>223         /// 是否启用调试输出224         /// </summary>225         public static bool IsDebugEnabled226         {227             get { return log.IsDebugEnabled; }228         }229 230         /// <summary>231         /// 是否启用信息输出232         /// </summary>233         public static bool IsInfoEnabled234         {235             get { return log.IsInfoEnabled; }236         }237 238         /// <summary>239         /// 是否启用信息输出240         /// </summary>241         public static bool IsWarnEnabled242         {243             get { return log.IsWarnEnabled; }244         }245 246         /// <summary>247         /// 是否启用错误输出248         /// </summary>249         public static bool IsErrorEnabled250         {251             get { return log.IsErrorEnabled; }252         }253 254         /// <summary>255         /// 是否启用致命输出256         /// </summary>257         public static bool IsFatalEnabled258         {259             get { return log.IsFatalEnabled; }260         }261     }

2、定义Log4net.config配制文件

<?xml version="1.0" encoding="gb2312" ?><configuration>  <configSections>    <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />  </configSections>  <log4net>    <appender name="DebugInfoAppender" type="log4net.Appender.RollingFileAppender">      <file type="log4net.Util.PatternString" value=http://www.mamicode.com/"data\CarpaLog_Info.txt" />      <appendToFile value=http://www.mamicode.com/"true" />      <maximumFileSize value=http://www.mamicode.com/"1024KB"/>      <maxSizeRollBackups value=http://www.mamicode.com/"7"/>      <CountDirection value=http://www.mamicode.com/"1"/>      <RollingStyle value=http://www.mamicode.com/"Size"/>      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value=http://www.mamicode.com/"%newline%date [%thread] %-5level - %message%newline" />      </layout>      <filter type="log4net.Filter.LevelRangeFilter">        <levelMin value=http://www.mamicode.com/"DEBUG" />        <levelMax value=http://www.mamicode.com/"INFO" />      </filter>    </appender>    <appender name="WarnErrorFatalAppender" type="log4net.Appender.RollingFileAppender">      <file type="log4net.Util.PatternString" value=http://www.mamicode.com/"data\CarpaLog_Error.txt" />      <appendToFile value=http://www.mamicode.com/"true" />      <RollingStyle value=http://www.mamicode.com/"Date" />      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value=http://www.mamicode.com/"%newline%date [%thread] %-5level - %message%newline" />      </layout>      <filter type="log4net.Filter.LevelRangeFilter">        <levelMin value=http://www.mamicode.com/"WARN" />        <levelMax value=http://www.mamicode.com/"FATAL" />      </filter>    </appender>    <appender name="DebugAppender" type="Carpa.Logging.Appender.DebugAppender">      <layout type="Carpa.Logging.Layout.PatternLayout">        <conversionPattern value=http://www.mamicode.com/"%date [%thread] %-5level %type - %message%newline" />      </layout>    </appender>    <appender name="ApiInfoAppender" type="log4net.Appender.RollingFileAppender">      <file type="log4net.Util.PatternString" value=http://www.mamicode.com/"data\ApiLog.txt" />      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>      <appendToFile value=http://www.mamicode.com/"true" />      <maximumFileSize value=http://www.mamicode.com/"5MB"/>      <maxSizeRollBackups value=http://www.mamicode.com/"7"/>      <CountDirection value=http://www.mamicode.com/"1"/>      <RollingStyle value=http://www.mamicode.com/"Size"/>      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value=http://www.mamicode.com/"%newline%date [%thread] %-5level - %message%newline" />      </layout>      <!--<filter type="log4net.Filter.LoggerMatchFilter">        <loggerToMatch value=http://www.mamicode.com/"ApiLogs" />      </filter>      <filter type="log4net.Filter.DenyAllFilter" />-->          </appender>    <logger name="ApiLogs">      <level value=http://www.mamicode.com/"ALL" />      <appender-ref ref="ApiInfoAppender" />    </logger>    <logger name="test.Logging.Log">      <level value=http://www.mamicode.com/"INFO" />      <appender-ref ref="FileAppender" />      <appender-ref ref="DebugInfoAppender" />      <appender-ref ref="WarnErrorFatalAppender" />    </logger>  </log4net></configuration>

 

核心说明:通过该类logManager.GetLogger("Name")的Name参数来区分,并定义配制文件中logger中name与Getlogger的Name名称一致

 

log4net将日志进行分类,保存到不同的目录当中