日志插件 log4net 的配置和使用
文本格式说明
可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。
文本参数说明
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID 等同于 %thread
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
模式字符串为:%-10c -%m%n
代码为:
ILog log=LogManager.GetLogger(“Exam.Log”);
log.Debug(“Hello”);
则输出为下面的形式:
Exam.Log - Hello
%method:输出语句所在的方法名
%L:输出语句所在的行号
%F:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
%newline: 错误详情
%message: 自定义输出信息
%logger: 类
%property: 属性
以下为个人定义的模板
<conversionPattern value="
%n======= ===
%n【日志级别】%-5level
%n【记录时间】%date
%n【线程编号】[%thread]
%n【执行时间】[%r]毫秒
%n【出错文件】%F
%n【出错类名】%class
%n【出错函数】%method
%n【出错行号】%L
%n【日志对象】%logger
%n【日志属性】%property{NDC}
%n【错误描述】%message
%n【错误详情】%newline" />
输出示例:
==========
【日志级别】ERROR
【记录时间】2012-11-08 15:49:37,625
【线程编号】[10]
【执行时间】[180]毫秒
【出错文件】C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs
【出错行号】24
【出错的类】ConsoleApplication5.Program 属性[(null)]
【错误描述】错误
【错误详情】
System.DivideByZeroException: 尝试除以零。
在 ConsoleApplication5.Program.Main(String[] args) 位置 C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs:行号 20
==========
【日志级别】ERROR
【记录时间】2012-11-08 15:49:37,666
【线程编号】[10]
【执行时间】[221]毫秒
【出错文件】C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs
【出错行号】28
【出错的类】ConsoleApplication5.Program 属性[(null)]
【错误描述】error
【错误详情】
System.Exception: 发生了一个异常
使用说明:
配置文件:
节点: <configuration>中添加
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
<log4net> <!--定义输出到文件中--> <appender name="SysAppender" type="log4net.Appender.RollingFileAppender"> <!--日志的路径--> <file value="Logs/Log4Net/" /> <!--是否覆盖,默认是追加true--> <appendToFile value="true"/> <rollingStyle value="Composite"/> <!--文件名称--> <DatePattern value="yyyy-MM-dd'.log'"></DatePattern> <!--设置无限备份=-1 ,最大备份数为1000--> <param name="MaxSizeRollBackups" value="1000"/> <!--每个文件的大小--> <param name="MaximumFileSize" value="500KB"/> <!--名称是否可以更改为false为可以更改--> <param name="StaticLogFileName" value="false"/> <layout type="log4net.Layout.PatternLayout"> <!--输出格式--> <conversionPattern value="%n======= === </layout> </appender> <!--定义输出到控制台命令行中--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%n======= === </layout> </appender> <!--定义输出到windows事件中--> <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%n======= === </layout> </appender> <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。--> <root> <!--文件形式记录日志-->> <appender-ref ref="SysAppender"/> <!--控制台控制显示日志--> <appender-ref ref="ConsoleAppender"/> <!--Windows事件日志--> <!--<appender-ref ref="EventLogAppender"/>--> <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉 <appender-ref ref="AdoNetAppender_Access" /> --> </root> </log4net> |
代码中:
引用
using log4net;
using System.Reflection
在命名空间中添加[红色的内容]
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace ConsoleApplication5
调用示例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
using System;using System.Collections.Generic;using System.Text;using log4net;using System.Reflection;[assembly: log4net.Config.XmlConfigurator(Watch = true)]namespace ConsoleApplication5{ class Program { static void Main(string[] args) { //创建日志记录组件实例 ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); //记录严重错误 log.Fatal("严重错误"); log.Fatal("严重错误", new Exception("发生了一个致命错误")); //记录错误日志 log.Error("错误"); log.Error("错误", new Exception("发生了一个异常")); //记录警告信息 log.Warn("警告"); log.Error("警告", new Exception("有一个警告信息")); //记录一般信息 log.Info("一般信息"); log.Error("一般信息", new Exception("发出一个一般信息")); //记录调试信息 log.Debug("调试信息"); log.Error("调试信息", new Exception("发生了一个调试信息")); Console.Read(); } }} |
示例程序下载: 日志记录插件_log4net.zip
出处:https://www.cnblogs.com/henw/archive/2012/11/08/2760780.html
日志插件 log4net 的配置和使用的更多相关文章
- .NET技术-3.0. 日志插件 log4net
.NET技术-3.0. 日志插件 log4net 背景:框架 NetFramework3.5 1. 新建控制台程序 2. 程序包管理器控制台中 增加 Nuget包 Install-Package lo ...
- asp.net MVC日志插件Log4Net学习笔记一:保存日志到本地
log4net(Log For Net)是Apache开源的应用于.Net框架的日志记录工具,详细信息参见Apache网站.它是针对Java的log4j(Log For Java的)姊妹工具.用过lo ...
- asp.net MVC日志插件Log4Net学习笔记二:保存日志到sqlserver的配置
1.写到sqlserver的配置: <!--保存到SQLSERVER数据库日志--> <log4net> <appender name="AdoNetAppen ...
- 日志插件 log4net 的使用
文本格式说明 可以记载的日志类别包括:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息). 文本参数说明 %m(message):输出的日志 ...
- 转:日志插件 log4net 的使用
文本格式说明 可以记载的日志类别包括:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息). 文本参数说明 %m(message):输出的日志 ...
- log4Net不能成功生成日志问题(关于配置错误)
log4Net不能成功生成日志问题(关于配置错误) 调试发现问题原因在于 Log4Net IsInfoEnabled 一直为 false,返回的对象中所有 IsXXX 一直为false,这个问题的原 ...
- 日志管理-将Log4net的配置配置到的独立文件中
转自:http://www.cnblogs.com/zfanlong1314/p/3662679.html使用log4net已经很久了.但从来没有详情了解log4的参数,及具体使用方法.看了周公的博客 ...
- Log4net快速配置使用指南。(快速搭建log4net日志平台手册)
每做一个新项目,都会用到log4net,但总是忘记如何快速配置.有时在网上搜半天也找不到好的模板,大都在介绍参数的使用,在此做下总结,争取下次用时仅10分钟就可搭建好log4net. 直接上介绍的步骤 ...
- 基于log4net的日志组件扩展封装,实现自动记录交互日志 XYH.Log4Net.Extend(微服务监控)
背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或 ...
随机推荐
- httppost core net
public static string Post(string url, string data, Encoding encoding) { try { HttpWebRequest req = W ...
- 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器如何开启ST ...
- ThreadPoolExcutor
先保存一个链接,后续更新 JAVA进阶----ThreadPoolExecutor机制 ExecutorService生命周期 理解ThreadPoolExecutor源码(一)线程池的corePoo ...
- python中变量命名的基本规则,标识符和关键字
变量的命名 目标 标识符和关键字 变量的命名规则 0.1 标识符和关键字 1.1 标识符 标示符就是程序员定义的 变量名.函数名 名字 需要有 见名知义 的效果,见下图:  标示符可以由 字母.下划 ...
- JAVA基本类型和包装类
JAVA的包装类 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表 ...
- leetcode56:合并区间
给出一个区间的集合,请合并所有重叠的区间.(解题思想来源于:https://blog.csdn.net/qq_34364995/article/details/80788049 ) 示例 1: 输入: ...
- HDU 6143 17多校8 Killer Names(组合数学)
题目传送:Killer Names Problem Description > Galen Marek, codenamed Starkiller, was a male Human appre ...
- React Native项目集成iOS原生模块
今天学习一下怎么在React Native项目中集成iOS原生模块,道理和在iOS原生项目中集成React Native模块类似.他们的界面跳转靠的都是iOS原生的UINavigationContro ...
- PhoneGap Vs AppCan
首先在写这篇文章前,必须先申明一下,本人是技术出身,对HTML技术及手机客户端都有过编程经验,只是出于工作岗位的变动,便没有再具体代码工作,以下文章涉及的中间件的基本代码实现及前期的API使用,都是自 ...
- phpcms 新建模块安装
1.安装配置---小问题: 估计就我这么傻 T-T ,改成自己的目录名. 2.模块的目录: 模块存放在modules文件夹里,打开这个文件夹,里面的一个文件夹代表一个模块. 3.建立模块以及其基本目 ...