log4Net使用 z
http://logging.apache.org/log4net/
1.Log4net主要结构分析
1.1 Logger:是应用程序与Log4net进行交互的主要模块,它也是log4net生成log的模块。Logger主要负责得到log信息,
得到log信息之后接下来的显示log则是在Layout模块中处理。
2.2 Logger Level:Log级别
OFF
FATAL
ERROR
WARN
INFO
DEBUG
ALL
2.3 Appender: log目的地
ConsoleAppender:将日志输出到控制台
FileAppender:将日志输出到文件中
RollingFileAppender:将日志以回滚文件的形式写到文件中
EventLogAppender:将日志写到window event log
AdoNetAppender:将日志写入数据库中
2.4 Layout:log格式化器
%m(message):输出的日志信息
%n(new line):换行
%d(datatime):输出当前语句运行的时刻
%r(run time):输出程序从运行至执行当前语句时消耗的毫炒数
%t(thread id):线程ID
%p(priority):日志的当前优先级别,debug,info,warn...等
%c(class)、%logger:当前日志对象的名称
%file:输出语句所在的文件名
%l(line):输出语句所在的行号
%数字:表示该项的最小长度,如果不够,则用空格填充。
2.在Winform项目中应用log4net框架
2.1 使用Nuget安装log4net
2.2 在AssemblyInfo文件中注册Log4net的配置文件
//配置文件为app.config
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
//配置文件为log4net.config
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
2.3 配置app.config(设置文件属性"Copy to output directory"为"copy always")

1 <?xml version="1.0"?>
2 <configuration>
3 <configSections>
4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
5 </configSections>
6
7 <log4net>
8 <!--定义输出到文件中-->
9 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
10 <!--定义文件存放位置-->
11 <file value="D:/log4netfile.txt" />
12 <appendToFile value="true" />
13 <layout type="log4net.Layout.PatternLayout">
14 <!--每条日志末尾的文字说明-->
15 <footer value="by Paul" />
16 <!--输出格式-->
17 <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
18 <conversionPattern value="记录时间:%d 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
19 </layout>
20 </appender>
21
22 <!--定义以回滚方式输出到文件中(按照文件大小记录日志)-->
23 <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
24 <!--定义文件存放位置-->
25 <file value="D:/log4netfile.txt" />
26 <appendToFile value="true" />
27 <rollingStyle value="size"/>
28 <!--最大的日志文件个数,生成的文件名会是log4netFile.txt.1,log4netFile.txt.2 ...如果记录的日志超过10个,会从第1 个文件开始覆盖-->
29 <maxSizeRollBackups value="10"/>
30 <!--每个日志文件最大100KB-->
31 <maximumFileSize value="100KB"/>
32 <staticLogFileName value="true" />
33 <layout type="log4net.Layout.PatternLayout">
34 <!--每条日志末尾的文字说明-->
35 <footer value="by Paul" />
36 <!--输出格式-->
37 <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
38 <conversionPattern value="记录时间:%d 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
39 </layout>
40 </appender>
41
42 <!--定义以回滚方式输出到文件中(按照日期记录日志)-->
43 <appender name="RollingFileAppenderByDate" type="log4net.Appender.RollingFileAppender">
44 <!--定义文件存放位置-->
45 <file value="D:/log4netfile_DateFormat_log.txt" />
46 <appendToFile value="true" />
47 <rollingStyle value="Date"/>
48 <datePattern value="yyyyMMdd"/>
49 <layout type="log4net.Layout.PatternLayout">
50 <!--每条日志末尾的文字说明-->
51 <footer value="by Paul" />
52 <!--输出格式-->
53 <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
54 <conversionPattern value="记录时间:%d 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
55 </layout>
56 </appender>
57
58 <!--定义输出到控制台命令行中-->
59 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
60 <layout type="log4net.Layout.PatternLayout">
61 <conversionPattern value="%date [%thread] %-5level %logger - %file - %message%newline" />
62 </layout>
63 </appender>
64
65 <!--定义输出到windows事件中-->
66 <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
67 <layout type="log4net.Layout.PatternLayout">
68 <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
69 </layout>
70 </appender>
71
72 <!--定义输出到Sql server数据库中-->
73 <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
74 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
75 <connectionString value="Data Source=192.168.0.57;Initial Catalog=IPP_PCL_DEV;User ID=IPPCLDev;Password=smlSI123"/>
76 <commandText value="INSERT INTO Log (LogLevel,Logger,Message,Exception,LogDate) VALUES (@log_level,@logger,@message,@exception,@log_date)" />
77 <bufferSize value="1" />
78
79 <parameter>
80 <parameterName value="@log_date" />
81 <dbType value="DateTime" />
82 <layout type="log4net.Layout.RawTimeStampLayout"/>
83 </parameter>
84
85 <parameter>
86 <parameterName value="@log_level" />
87 <dbType value="String" />
88 <size value="50" />
89 <layout type="log4net.Layout.PatternLayout">
90 <conversionPattern value="%level" />
91 </layout>
92 </parameter>
93
94 <parameter>
95 <parameterName value="@logger" />
96 <dbType value="String" />
97 <size value="255" />
98 <layout type="log4net.Layout.PatternLayout">
99 <conversionPattern value="%logger" />
100 </layout>
101 </parameter>
102
103 <parameter>
104 <parameterName value="@message" />
105 <dbType value="String" />
106 <size value="200" />
107 <layout type="log4net.Layout.PatternLayout">
108 <conversionPattern value="%m" />
109 </layout>
110 </parameter>
111
112 <parameter>
113 <parameterName value="@exception"/>
114 <dbType value="String"/>
115 <size value="2000"/>
116 <layout type="log4net.Layout.ExceptionLayout"/>
117 </parameter>
118
119
120 </appender>
121
122 <root>
123 <level value="DEBUG" />
124 <appender-ref ref="ConsoleAppender"/>
125 <appender-ref ref="AdoNetAppender"/>
126 </root>
127 </log4net>
128 </configuration>

2.4 编写Log

1 class Program
2 {
3
4 [STAThread]
5 static void Main()
6 {
7 ILog log = LogManager.GetLogger("Program333");
8
9 log.Error("this is a log information",new ArgumentNullException());
10
11 log.Warn("this is a log information");
12
13 log.Info("this is a log information");
14
15 log.Debug("this is a log information");
16
17 Console.ReadKey();
18 }
19 }

2.5 在运行时动态修改log的配置

public static void SetLogPath(string filePath)
{
var appender = LogManager.GetRepository().GetAppenders().FirstOrDefault(item => item.Name.Equals("DownloadAndUploadLogAppender")) as FileAppender; if (appender == null)
{
throw new NotSupportedException("not find DownloadAndUploadLogAppender");
} appender.File = filePath; appender.ActivateOptions();
}

log4Net使用 z的更多相关文章
- 【Python】使用torrentParser1.03对多文件torrent的分析结果
Your environment has been set up for using Node.js 8.5.0 (x64) and npm. C:\Users\horn1>cd C:\User ...
- Log4net中的RollingFileAppender z
Log4日志组件的应用确实简单实用,在比较了企业库和Log4的日志功能后,个人觉得Log4的功能更加强大点.补充说明下,我使用的企业库是2.0版本,Log4net是1.2.1版本的. 在Log4net ...
- Log4net 配置输出文本, 按年月日分文件夹 z
在项目中新建 “log4net.config” 文件 <?xml version="1.0" encoding="utf-8" ?> <con ...
- using log4net on my project within a self-hosted WCF application z
Add reference to log4net.dll to our console service host project (our application entry point) Add t ...
- Log4Net在Windows服务中不能记录日志 z
解决方案: 在Windows安装服务的“serviceProcessInstaller1”中修改Account属性为LocalSystem.见下图 后来查了一下这个Account属性 说白了还是权限的 ...
- log4net使用手册
1. log4net简介 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.Java平台下,它还 ...
- 在VS2013中使用Log4net
大致分为3个步骤 引用Log4net
- Lucene.net站内搜索—4、搜索引擎第一版技术储备(简单介绍Log4Net、生产者消费者模式)
目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...
- Apache log4net™ 手册——概述【翻译】
原文地址 本文内容 概述 框架 日志(Loggers)和追加器(Appenders) 日志层次(Logger hierarchy) 追加器(Appenders) 筛选(Filters) 布局(Layo ...
随机推荐
- ES
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-service-win.html https://www.e ...
- Nanopore sensors for nucleic acid analysis 论文阅读笔记
Nanopore sensors for nucleic acid analysis Bala Murali Venkatesan and Rashid Bashir 用于核酸分析的纳米孔传感器 纳米 ...
- Nginx-缓冲原理及优化
一.作用及原理 作用: 使用缓冲释放后端服务器 反向代理的一个问题是代理大量用户时会增加服务器进程的性能冲击影响.在大多数情况下,可以很大程度上能通过利用Nginx的缓冲和缓存功能减轻.当代理到另一台 ...
- Python字典笔记
1.字典是Python中=唯一的映射类型.映射类型对象里哈希值(键,key)和只指向的对象(值,value)是一对多的关系,一个字典是可变的,是一个容器类型.字典类型和序列类型(元组,列表)的不同在于 ...
- Python元组的简单介绍
1.实际上元组是跟列表非常相近的另一种容器类型.元组和列表看上去的不同的一点是元组用圆括号而列表用方括号.而在功能上,元组是一种不可变的类型.正是因为这个原因,元组可以做一些列表不可以做的事情,比如用 ...
- 如何处理ABBYY中出现错误代码142和55的问题
在使用ABBYY FineReader 12OCR文字识别软件创建PDF文件时,有时会出现以下错误提示:内部程序错误..\Src\SpecialFontFactory.cpp,142和内部程序错误.. ...
- linux包之iproute之ip命令
[root@localhost ~]# rpm -qf /sbin/ipiproute-2.6.32-31.el6.x86_64ip 是个命令, ip 命令的功能很多!基本上它整合了 ifconfig ...
- noip2011普及组——统计单词数
统计单词数 时间限制:1 s 内存限制:128MB [问题描述]一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实 ...
- 解决Oracle安装完成后,随便输入用户名密码只要选择DBA身份就能登陆进去的问题
以sysdba身份登录既采用的是本地(系统)认证方式, 将%ORACLE_HOME%\network\admin\sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= ...
- 使用Axure制作App原型应该怎样设置尺寸?
使用Axure制作的原型,如果你没有设置自适应视图的话它是不会自动适应任何设备的. 若要解释清楚这个问题需要的篇幅比较长,请大家自行参考 Point/Pixel/PPI/DPI 的意思和它们之间的关系 ...