博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日志插件 log4net 的使用
阅读量:6839 次
发布时间:2019-06-26

本文共 4625 字,大约阅读时间需要 15 分钟。

文本格式说明

可以记载的日志类别包括: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 
%L:输出语句所在的行号 
%F:输出语句所在的文件名 
%-数字:表示该项的最小长度,如果不够,则用空格填充 
%newline: 错误详情 
%message: 自定义输出信息 
%logger: 类 
%property: 属性

 

以下为个人定义的模板

%n========== 

%n【日志级别】%-5level 
%n【记录时间】%date 
%n【线程编号】[%thread] 
%n【执行时间】[%r]毫秒 
%n【出错文件】%F 
%n【出错行号】%L 
%n【出错的类】%logger 属性[%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==========
%n【日志级别】%-5level
%n【记录时间】%date
%n【线程编号】[%thread]
%n【执行时间】[%r]毫秒
%n【出错文件】%F
%n【出错行号】%L
%n【出错的类】%logger 属性[%property{NDC}]
%n【错误描述】%message
%n【错误详情】%newline"/>
      
</
layout
>
    
</
appender
>
    
<!--定义输出到控制台命令行中-->
    
<
appender 
name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      
<
layout 
type="log4net.Layout.PatternLayout">
        
<
conversionPattern 
value="%n==========
%n【日志级别】%-5level
%n【记录时间】%date
%n【线程编号】[%thread]
%n【执行时间】[%r]毫秒
%n【出错文件】%F
%n【出错行号】%L
%n【出错的类】%logger 属性[%property{NDC}]
%n【错误描述】%message
%n【错误详情】%newline"/>
      
</
layout
>
    
</
appender
>
    
<!--定义输出到windows事件中-->
    
<
appender 
name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      
<
layout 
type="log4net.Layout.PatternLayout">
        
<
conversionPattern 
value="%n==========
%n【日志级别】%-5level
%n【记录时间】%date
%n【线程编号】[%thread]
%n【执行时间】[%r]毫秒
%n【出错文件】%F
%n【出错行号】%L
%n【出错的类】%logger 属性[%property{NDC}]
%n【错误描述】%message
%n【错误详情】%newline"/>
      
</
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();
        
}
    
}
}

 

示例程序下载: 

转载地址:http://uaqkl.baihongyu.com/

你可能感兴趣的文章
UIScrollView无法滚动可能的原因及解决办法分析
查看>>
wince 6.0 串口 读取 readfile 超时问题
查看>>
代码片段
查看>>
单例模式
查看>>
awk用法(三)
查看>>
谷歌深度学习公开课任务 5: Word2Vec&CBOW
查看>>
让Python不在mac的dock上显示火箭图标
查看>>
Oracle 数据库EM访问多个Instance
查看>>
理解 Delphi 的类(十) - 深入方法[28] - 递归函数实例: 搜索当前目录下的所有嵌套目录...
查看>>
前端纪实
查看>>
学 Win32 汇编[12]: PTR、OFFSET、ADDR、THIS
查看>>
WinAPI: GetLocalTime、SetLocalTime、SetSystemTime - 获取与设置系统时间
查看>>
关于 Delphi 中流的使用(6) 用流读写结构化文件
查看>>
复杂的结构化存取(一)
查看>>
web前端性能优化
查看>>
如何通过jq和php实现返回父级页面(附带记忆功能)
查看>>
Centos下运行gpg --gen-key生成key时出现卡住解决方案笔记
查看>>
Java时间操作工具类
查看>>
XML转JSON的javascript代码
查看>>
PHP冒泡排序详解
查看>>