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

摘要:
1.为Logs创建一个新的Class类;代码如下:1publicclassApiLogs2{3publicstaticintLog_Level{get;set;}4privatestaticbolinitialized=false;5私有静态创建ILoglog=日志管理器。GetLogger(“ApiLogs”);6staticApiLogs()7{8if(!in

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 IsDebugEnabled
226         {
227             get { return log.IsDebugEnabled; }
228         }
229 
230         /// <summary>
231         /// 是否启用信息输出
232         /// </summary>
233         public static bool IsInfoEnabled
234         {
235             get { return log.IsInfoEnabled; }
236         }
237 
238         /// <summary>
239         /// 是否启用信息输出
240         /// </summary>
241         public static bool IsWarnEnabled
242         {
243             get { return log.IsWarnEnabled; }
244         }
245 
246         /// <summary>
247         /// 是否启用错误输出
248         /// </summary>
249         public static bool IsErrorEnabled
250         {
251             get { return log.IsErrorEnabled; }
252         }
253 
254         /// <summary>
255         /// 是否启用致命输出
256         /// </summary>
257         public static bool IsFatalEnabled
258         {
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="dataCarpaLog_Info.txt" />
      <appendToFile value="true" />
      <maximumFileSize value="1024KB"/>
      <maxSizeRollBackups value="7"/>
      <CountDirection value="1"/>
      <RollingStyle value="Size"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG" />
        <levelMax value="INFO" />
      </filter>
    </appender>

    <appender name="WarnErrorFatalAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="dataCarpaLog_Error.txt" />
      <appendToFile value="true" />
      <RollingStyle value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="WARN" />
        <levelMax value="FATAL" />
      </filter>
    </appender>

    <appender name="DebugAppender" type="Carpa.Logging.Appender.DebugAppender">
      <layout type="Carpa.Logging.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %type - %message%newline" />
      </layout>
    </appender>

    <appender name="ApiInfoAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="dataApiLog.txt" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <appendToFile value="true" />
      <maximumFileSize value="5MB"/>
      <maxSizeRollBackups value="7"/>
      <CountDirection value="1"/>
      <RollingStyle value="Size"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level - %message%newline" />
      </layout>

      <!--<filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="ApiLogs" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />-->
      
    </appender>

    <logger name="ApiLogs">
      <level value="ALL" />
      <appender-ref ref="ApiInfoAppender" />
    </logger>
    <logger name="test.Logging.Log">
      <level value="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将日志进行分类,保存到不同的目录当中》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python用户管理系统MySQL常用技能篇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# 开源日志框架配置

一、NLog 注: NLog可以将日志记录在 数据库,文件,控制台, 以下只记录文件日志配置 1.WebAPI分Controller层级打印日志配置 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchem...

syslogng 消息过滤 寻找来源

引用:http://baike.baidu.com/view/3426564.htm 一、基础 syslog-ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能。 系统自带版本: 引用 # rpm -qa|grep syslog-ng syslog-ng-1.6.7-1 syslog官方网站: 点击 最新版...

Snort-IPS-入侵防御系统安装及部署小记

安装环境为Ubuntu,使用源码编译方式安装并导入社区Snort规则;通过Splunk做GUI展示,联合防火墙做防御,依据Snort官网文档操作。 Ubuntu 18和20上的Snort 3.0.1用Splunk当SIEM 诺亚·迪特里希 内容介绍 安装Snort 配置网卡 安装OpenApplD 安装Snort规则集 启用内置规则 将PCAP文件传...

日志回滚:python(日志分割)

日志回滚:python 什么是日志回滚? 答: 将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会越来越庞大,进而影响系统的性能。因此,有必要对日志文件按某种条件进行切分,要切分日志文件。 分割日志的触发条件:大小、日期,或者大小加上日期。 说是切分,实际上是,当一个日志文件达到触发条件后,对日志文件进行重命名,之后再新建原来名称的日志...

Tomcat日志设定

1    Tomcat 日志概述Tomcat 日志信息分 为 两 类 :一是运行中的日志,它主要 记录 运行的一些信息,尤其是一些异常 错误 日志信息 。二是 访问 日志信息,它 记录 的 访问 的 时间 , IP , 访问 的 资 料等相 关 信息。2    Tomcat 日志配置2.1  访问日志的配置默认 tomcat 不记录访问日志,如下方法可以使...

SpringBoot如何使用Slf4j日志与logback-spring.xml配置详解

一、SpringBoot如何使用Slf4j日志   springboot是默认使用slf4j进行日志管理的,所以集成也比较方便。 1、添加依赖 (1)spring-boot-starter-web依赖,用于自动导入日志框架的依赖 <dependency> <groupId>org.springframework.boot&l...