目录
简介
官方文档
Log4net 有三个主要组件:logger, appenders 和 layouts。
layout
PatternLayout
使用模式字符串可配置的灵活布局。格式化的结果依赖于 conversion 模式。
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="%date 线程ID:[%thread] %-5level - %message%newline"/>
</layout>
字符
占位符 | 含义 |
---|---|
%logger | 输出日志事件的日志器。默认完整打印记录器名称。如果给定了精度说明符,则只会打印记录器名称最右侧组件的相应编号。例:若日志器名为 “a.b.c”,模式为 %logger{2},将输出 “b.c”. |
%date | 以 local time zone 输出日志事件的日期。推荐使用 log4net 日期格式化器,能得到更好的输出。 |
%utcdate | 输出universal time日期 |
%timestamp | 输出从应用程序启动到日志事件创建所经过的毫秒数。 |
%thread | 等同于(%t),线程名称或线程ID |
%message | 输出函数调用时传入参数 |
%newline | 等同于(%n),输出换行。 |
%method | 输出发生日志请求时的方法名。警告:产生调用位置信息相当慢。除非执行速度不是问题,否则要避免使用它。 |
%% | 输出一个百分号 |
%stacktrace{level} | 输出日志事件的堆栈跟踪,堆栈跟踪级别说明符可以用大括号括起来 |
%property | 用于输出特定于事件的属性。 |
特征
- 支持多种框架
- 输出到多个日志目标
- 分层日志架构
- XML 配置
- 动态配置
- 日志上下文
- 成熟的架构
- 模块化和可扩展设计
- 高性能与灵活性
输出到多个日志
常用
log4net.Appender.RollingFileAppender: 将日志事件写入文件系统中的文件。可以配置为基于日期或文件大小限制记录到多个文件。
log4net.Appender.ConsoleAppender 将日志事件写入应用程序的控制台。事件可能会转到标准我们的流或标准错误流。
其他
Appender Config Examples详细介绍
分层日志架构
XML 配置
BS端
在web.config文件汇总
CS端(wpf)
编程方式配置
(待补充)
嵌入单独XML配置文件
(待补充)
嵌入其他XML配置文件
在App.config中添加以下代码
configSetions 元素必须作为 configuration 元素的第一个子元素。否则,运行应用程序时,会报错。
<configSections>
<!--log4net配置-->
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<!--定义输出到文件中-->
<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<!--file可以指定具体的路径 D://logfile.txt。-->
<!--<file value="D://logs//"/>-->
<!--如果放在Debug下,当然名字你可以改 -->
<file value="/logs/log"/>
<!--是否追加到文件-->
<appendToFile value="true"/>
<!--变换的形式为日期-->
<rollingStyle value="Date"/>
<!--备份log文件的个数最多10个-->
<maxSizeRollBackups value="10" />
<!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->
<maximumFileSize value="2MB" />
<!-- 是否使用静态文件名-->
<param name="StaticLogFileName" value="false" />
<!--<datePattern value="yyyyMMdd-HH:mm:ss"/>-->
<datePattern value="yyyy-MM-dd'.log'" />
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="%date 线程ID:[%thread] %-5level - %message%newline"/>
</layout>
</appender>
<!--定义日志的输出媒介-->
<root>
<!--指定将此级别及以上级别的log打印到log文件中-->
<level value="DEBUG"/>
<!--文件形式记录日志-->
<appender-ref ref="RollingFileAppender"/>
</root>
</log4net>
整体图片
动态配置
动态配置文件存放路径
在调用函数之前加入以下代码(在构造函数中)
var repository = LogManager.GetRepository();
var appenders = repository.GetAppenders();
var targetApder = appenders.First(p => p.Name == "RollingFileAppender") as RollingFileAppender;//根据名称找到appender
targetApder.File = "D:/Media/Logs/Cache/";
targetApder.ActivateOptions();