日志组件Log4Net

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <configuration>
 3   <configSections>
 4     <!--添加自定义节点:log4net  type:解析类名,程序集名(log4net.dll)-->
 5     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
 6   </configSections>
 7
 8   <log4net>
 9     <!--定义输出到文件中-->
10     <appender name="Log4Net_INFO" type="log4net.Appender.RollingFileAppender">
11       <!--定义文件存放位置-->
12       <file value="C:/log4net/"/>
13       <!--是否追加到文件,默认为true,通常无需设置-->
14       <appendToFile value="true"/>
15       <RollingStyle value="Date"/>
16       <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
17       <DatePattern value="INFO_yyyyMMdd&quot;.log&quot;" />
18       <!--日志文件名是否为静态-->
19       <StaticLogFileName value="false"/>
20       <!--多线程时采用最小锁定-->
21       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
22       <!--布局(向用户显示最后经过格式化的输出信息)-->
23       <layout type="log4net.Layout.PatternLayout">
24         <!--
25            %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
26            %n(new line):换行
27            %d(datetime):输出当前语句运行的时刻
28            %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
29            %t(thread id):当前语句所在的线程ID
30            %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
31            %c(class):当前日志对象的名称,例如:
32            %L:输出语句所在的行号
33            %F:输出语句所在的文件名
34            %-数字:表示该项的最小长度,如果不够,则用空格填充
35           -->
36         <Header value="[Header]
"/>
37         <Footer value="[Footer]
"/>
38         <!--正文-->
39         <ConversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline"  />
40       </layout>
41     </appender>
42
43     <appender name="Log4Net_ERROR" type="log4net.Appender.RollingFileAppender">
44       <file value="C:/log4net/"/>
45       <appendToFile value="true"/>
46       <RollingStyle value="Date"/>
47       <DatePattern value="ERROR_yyyyMMdd&quot;.log&quot;" />
48       <StaticLogFileName value="false"/>
49       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
50       <layout type="log4net.Layout.PatternLayout">
51         <Header value="[Header]
"/>
52         <Footer value="[Footer]
"/>
53         <!--正文-->
54         <ConversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline"  />
55       </layout>
56     </appender>
57
58     <root>
59       <level value="ERROR"/>
60       <appender-ref ref="Log4Net_ERROR" />
61
62       <level value="INFO"/>
63       <appender-ref ref="Log4Net_INFO" />
64     </root>
65
66   </log4net>
67
68 </configuration>

配置文件

  1 using log4net;
  2 using System;
  3 using System.Collections.Concurrent;
  4 using System.Collections.Generic;
  5
  6 //指定log4net使用的config文件来读取配置信息
  7 [assembly: log4net.Config.XmlConfigurator(ConfigFile = @"LogConfig\Log4Net.config", Watch = true)]
  8 namespace Project.Log4.Net.LogConfig
  9 {
 10     /// <summary>
 11     /// 日志帮助类
 12     /// </summary>
 13     public class LogHelper
 14     {
 15         private static readonly ConcurrentDictionary<Type, ILog> _loggers = new ConcurrentDictionary<Type, ILog>();
 16
 17         /// <summary>
 18         /// 获取记录器
 19         /// </summary>
 20         /// <param name="source"></param>
 21         /// <returns></returns>
 22         private static ILog GetLogger(Type source)
 23         {
 24             if (_loggers.ContainsKey(source))
 25             {
 26                 return _loggers[source];
 27             }
 28             else
 29             {
 30                 ILog logger = LogManager.GetLogger(source);
 31                 _loggers.TryAdd(source, logger);
 32                 return logger;
 33             }
 34         }
 35
 36         /* Log a message object */
 37
 38         /// <summary>
 39         /// 调试信息
 40         /// </summary>
 41         /// <param name="source"></param>
 42         /// <param name="message"></param>
 43         public static void Debug(object source, string message)
 44         {
 45             Debug(source.GetType(), message);
 46         }
 47
 48         /// <summary>
 49         /// 调试信息
 50         /// </summary>
 51         /// <param name="source"></param>
 52         /// <param name="message"></param>
 53         /// <param name="ps"></param>
 54         public static void Debug(object source, string message, params object[] ps)
 55         {
 56             Debug(source.GetType(), string.Format(message, ps));
 57         }
 58
 59         /// <summary>
 60         /// 调试信息
 61         /// </summary>
 62         /// <param name="source"></param>
 63         /// <param name="message"></param>
 64         public static void Debug(Type source, string message)
 65         {
 66             ILog logger = GetLogger(source);
 67             if (logger.IsDebugEnabled)
 68                 logger.Debug(message);
 69         }
 70
 71         /// <summary>
 72         /// 关键信息
 73         /// </summary>
 74         /// <param name="source"></param>
 75         /// <param name="message"></param>
 76         public static void Info(object source, object message)
 77         {
 78             Info(source.GetType(), message);
 79         }
 80
 81         /// <summary>
 82         /// 关键信息
 83         /// </summary>
 84         /// <param name="source"></param>
 85         /// <param name="message"></param>
 86         public static void Info(Type source, object message)
 87         {
 88             ILog logger = GetLogger(source);
 89             if (logger.IsInfoEnabled)
 90                 logger.Info(message);
 91         }
 92
 93         /// <summary>
 94         /// 警告信息
 95         /// </summary>
 96         /// <param name="source"></param>
 97         /// <param name="message"></param>
 98         public static void Warn(object source, object message)
 99         {
100             Warn(source.GetType(), message);
101         }
102
103         /// <summary>
104         /// 警告信息
105         /// </summary>
106         /// <param name="source"></param>
107         /// <param name="message"></param>
108         public static void Warn(Type source, object message)
109         {
110             ILog logger = GetLogger(source);
111             if (logger.IsWarnEnabled)
112                 logger.Warn(message);
113         }
114
115         /// <summary>
116         /// 错误信息
117         /// </summary>
118         /// <param name="source"></param>
119         /// <param name="message"></param>
120         public static void Error(object source, object message)
121         {
122             Error(source.GetType(), message);
123         }
124
125         /// <summary>
126         /// 错误信息
127         /// </summary>
128         /// <param name="source"></param>
129         /// <param name="message"></param>
130         public static void Error(Type source, object message)
131         {
132             ILog logger = GetLogger(source);
133             if (logger.IsErrorEnabled)
134                 logger.Error(message);
135         }
136
137         /// <summary>
138         /// 失败信息
139         /// </summary>
140         /// <param name="source"></param>
141         /// <param name="message"></param>
142         public static void Fatal(object source, object message)
143         {
144             Fatal(source.GetType(), message);
145         }
146
147         /// <summary>
148         /// 失败信息
149         /// </summary>
150         /// <param name="source"></param>
151         /// <param name="message"></param>
152         public static void Fatal(Type source, object message)
153         {
154             ILog logger = GetLogger(source);
155             if (logger.IsFatalEnabled)
156                 logger.Fatal(message);
157         }
158
159         /* Log a message object and exception */
160
161         /// <summary>
162         /// 调试信息
163         /// </summary>
164         /// <param name="source"></param>
165         /// <param name="message"></param>
166         /// <param name="exception"></param>
167         public static void Debug(object source, object message, Exception exception)
168         {
169             Debug(source.GetType(), message, exception);
170         }
171
172         /// <summary>
173         /// 调试信息
174         /// </summary>
175         /// <param name="source"></param>
176         /// <param name="message"></param>
177         /// <param name="exception"></param>
178         public static void Debug(Type source, object message, Exception exception)
179         {
180             GetLogger(source).Debug(message, exception);
181         }
182
183         /// <summary>
184         /// 关键信息
185         /// </summary>
186         /// <param name="source"></param>
187         /// <param name="message"></param>
188         /// <param name="exception"></param>
189         public static void Info(object source, object message, Exception exception)
190         {
191             Info(source.GetType(), message, exception);
192         }
193
194         /// <summary>
195         /// 关键信息
196         /// </summary>
197         /// <param name="source"></param>
198         /// <param name="message"></param>
199         /// <param name="exception"></param>
200         public static void Info(Type source, object message, Exception exception)
201         {
202             GetLogger(source).Info(message, exception);
203         }
204
205         /// <summary>
206         /// 警告信息
207         /// </summary>
208         /// <param name="source"></param>
209         /// <param name="message"></param>
210         /// <param name="exception"></param>
211         public static void Warn(object source, object message, Exception exception)
212         {
213             Warn(source.GetType(), message, exception);
214         }
215
216         /// <summary>
217         /// 警告信息
218         /// </summary>
219         /// <param name="source"></param>
220         /// <param name="message"></param>
221         /// <param name="exception"></param>
222         public static void Warn(Type source, object message, Exception exception)
223         {
224             GetLogger(source).Warn(message, exception);
225         }
226
227         /// <summary>
228         /// 错误信息
229         /// </summary>
230         /// <param name="source"></param>
231         /// <param name="message"></param>
232         /// <param name="exception"></param>
233         public static void Error(object source, object message, Exception exception)
234         {
235             Error(source.GetType(), message, exception);
236         }
237
238         /// <summary>
239         /// 错误信息
240         /// </summary>
241         /// <param name="source"></param>
242         /// <param name="message"></param>
243         /// <param name="exception"></param>
244         public static void Error(Type source, object message, Exception exception)
245         {
246             GetLogger(source).Error(message, exception);
247         }
248
249         /// <summary>
250         /// 失败信息
251         /// </summary>
252         /// <param name="source"></param>
253         /// <param name="message"></param>
254         /// <param name="exception"></param>
255         public static void Fatal(object source, object message, Exception exception)
256         {
257             Fatal(source.GetType(), message, exception);
258         }
259
260         /// <summary>
261         /// 失败信息
262         /// </summary>
263         /// <param name="source"></param>
264         /// <param name="message"></param>
265         /// <param name="exception"></param>
266         public static void Fatal(Type source, object message, Exception exception)
267         {
268             GetLogger(source).Fatal(message, exception);
269         }
270     }
271
272 }

LogHelper

时间: 2024-10-06 08:37:53

日志组件Log4Net的相关文章

日志组件log4net学习总结

记录的日志类别主要有FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息)五种. 1.在配置文件中添加以下配置节,并在顶级节点<configuration>下增加<log4net>子节点. <configSections> <section name ="log4net" type="log4net.Config.Log4NetConfigurationSectionHandle

log4net日志组件

一.什么是log4net组件 Log4net是基于.net开发的一款非常著名的记录日志开源组件.他最早是2001年7月由NeoWorks Limited启动的项目,基本的框架源于另外的一个非常著名的姐妹组件-log4j.Log4net记录日志的功能非常强大.它可以将日志分不同的等级,比不同的样式,将日志输出到不同的媒介(数据库.文本.控制台.邮件--). 二.log4net的核心内容 Log4net 主要分为5个核心主键: Logger,Appender,Filter,Layout,Object

ASP.NET使用log4Net日志组件教程(按日期与按日志大小切割)

对于一个大型网站与系统来说,日志是必备的工具,通过日志你可以非常清楚程序的运行情况,及时得到反馈来解决问题,下面介绍ASP.NET版本的log4Net日志组件是个非常强大的工具,最新版本for .net2.0 1.2.10.0 本人搞了一天,终于知道搞清楚怎样使用了,简单记录一下. 以下介绍的方法是log4net使用单独的配置文件的. 开始行动: 第一步:在项目引用log4net.dll文件 第二步: 在Web.config文件中加入一句代码,位置如下: <configuration>   

Log4Net日志组件使用

                                               Log4Net日志组件使用 概要:LogNet是一套开源的程序日志记录系统,经过配置后可以自动抓取程序中的错误.异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作 新建一个类库:Logger,封装一个LogHelper.cs using System; using System.Collections.Generic; using System.Linq; using System.Text;

快速入门系列--Log4net日志组件

Log4net是阿帕奇基金会的非常流行的开源日志组件,是log4j的.NET移植版本,至今已经有11年的历史,使用方便并且非常稳定,此外很重要的一点是其和很多开源组件能很好的组合在一起工作,例如NHibernate等.对于以本地日志为主的中小型的项目,Log4net已经足够使用,当然涉及跨平台的大型分布式系统可以选择Elmah等其他日志组件. 在这里,主要介绍log4net的一些关键知识点,详细内容可见以下链接: 官方配置文档:http://logging.apache.org/log4net/

.net core 使用log4net日志组件

一个web站点必须要记录日志,否则哪里出错了,完全是黑娃找黑妹,两眼一抹黑. 最常用的就是log4net日志组件.我们可以通过扩展加入日志组件. 第一步:在项目中NuGet log4net包,即 Install-Package log4net: 第二步:添加log4net.config配置文件到项目中: 第三步:在项目中新建一个LogExtension类,代码如下所示: public static partial class LogExtension { //配置文件,我将之放在站点根目录的Co

基于log4net的日志组件扩展分装,实现自动记录交互日志 XYH.Log4Net.Extend

背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或者项目中某一次执行情况的跟踪监控 根据log4net的现有功能满足不了实际需求,所以需要以log4net为基础进行分装完善,现在分装出了一个基础的版本,如有不妥之处,多多指点功能简介: 该组件是在log4net的基础上,进行了一定的扩展封装实现的自动记录交互日志功能 该组件的封装的目的是解决一下几个

Asp.net core 使用log4net作为日志组件,记录日志到本地。

原文:Asp.net core 使用log4net作为日志组件,记录日志到本地. GitHub demo :https://github.com/zhanglilong23/Asp.NetCore.Demo 1:引入包?首先使用Nuget引入log4net包,版本应>= 2.0.7 2:实现 ILogger 接口 public class Log4NetLogger : ILogger { private readonly ILog _log; private ILoggerRepository

C#组件系列———又一款日志组件:Elmah的学习和分享

前言:好久没动笔了,都有点生疏,12月都要接近尾声,可是这月连一篇的产出都没有,不能坏了“规矩”,今天还是来写一篇.最近个把月确实很忙,不过每天早上还是会抽空来园子里逛逛.一如既往,园子里每年这个时候都有大把的年终总结.回忆过去展望未来之类的文章.博主是没时间写总结了,要学的东西太多.关于Vue的系列一定要抽时间补上.最近刚用了一个日志组件Elmah,比较适合开发阶段异常信息的快速定位与追溯,有兴趣的跟着博主一起来看看吧. 本文原创地址:http://www.cnblogs.com/landea