Log4Net使用详解
1.Log4Net环境的搭建与基本配置
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace APP02
{
class Program
{
static void Main(string[] args)
{
ILog log = log4net.LogManager.GetLogger("Test");
log.Error("错误", new Exception("发生了一个异常"));//错误
log.Fatal("严重错误", new Exception("发生了一个致命错误"));//严重错误
log.Info("信息"); //记录一般信息
log.Debug("调试信息");//记录调试信息
log.Warn("警告");//记录警告信息
Console.WriteLine("日志记录完毕。");
Console.Read();
}
}
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<appender name="控制台输出" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<logger name="Test">
<level value="ALL"/>
<appender-ref ref="控制台输出" />
</logger>
</log4net>
</configuration>
2.Log4Net结构
3.logger节点配置详解
void
Debug(object message);
Debug(object message, Exception
exception);
bool
IsDebugEnabled { get; }
= LogManager.GetLogger("logger-name")
<log4net>
<logger additivity="true" name="Test">
<level value="ALL"/>
<appender-ref ref="控制台输出"/>
<appender-ref ref="文件输出"/>
</logger>
<appender name="控制台输出" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m %exception %n" />
</layout>
</appender>
<appender name="文件输出" type="log4net.Appender.FileAppender">
<param name="File" value="F:log-file.txt" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m %exception %n" />
</layout>
</appender>
</log4net>
<log4net xmlns="urn:log4net">
<logger xmlns="" name="Base">
<appender-ref ref="文件输出"/>
</logger>
<logger xmlns="" name="Base.Test"><!-- 继承Base-->
<level value="ALL"/>
<appender-ref ref="控制台输出"/>
</logger>
<appender xmlns="" name="控制台输出" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m %exception %n" />
</layout>
</appender>
<appender xmlns="" name="文件输出" type="log4net.Appender.FileAppender">
<param name="File" value="F:log-file.txt" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m %exception %n" />
</layout>
</appender>
</log4net>
4.appender节点配置详解
<appender name="文件输出" type="log4net.Appender.RollingFileAppender">
<file value="F:\log\Log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m %exception %n" />
</layout>
</appender>
<appender name="控制台输出" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m %exception %n" />
</layout>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="FATAL"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
5.filter节点配置详解
<appender xmlns="" name="测试输出" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m %exception %n" />
</layout>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="FATAL"/><!--只记录等级为“FATAL”的日志信息-->
</filter>
</appender>
<appender xmlns="" name="测试输出" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m %exception %n" />
</layout>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="FATAL"/><!--只记录等级为“FATAL”的日志信息-->
</filter>
<filter type="log4net.Filter.DenyAllFilter"/><!--在最后增加这个过滤器-->
</appender>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="FATAL"/>
</filter>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="ERROR"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMax value="ERROR"/>
<levelMin value="INFO"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/><!--不加这个过滤器也可以-->
6.Layout节点配置详解
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
7.其它节点的说明与配置
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%5p %n"/>
<!--可以使用:<param name="ConversionPattern" value="%5p %n"/>-->
</layout>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="FATAL"/>
<!--可以使用:<param name="LevelToMatch" value="FATAL"/>-->
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<root xmlns="">
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
8.配置文件
<log4net xmlns="urn:log4net">
<root xmlns="">
<level value="FATAL"/>
<appender-ref ref="控制台输出"/>
</root>
<logger xmlns="" name="Test">
<level value="ALL"/>
<appender-ref ref="控制台输出"/>
</logger>
<logger xmlns="" name="Test.lzw" additivity="false">
<level value="WARN"/>
<appender-ref ref="文件输出"/>
</logger>
<appender xmlns="" name="控制台输出" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%5p %n"/>
</layout>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="FATAL"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender xmlns="" name="文件输出" type="log4net.Appender.FileAppender">
<file value="F:\ServerLog.txt" />
<appendToFile value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%property %n" />
</layout>
</appender>
</log4net>
log4net.Config.XmlConfigurator(Watch = true)]
//配置文件:App.exe.log4net
log4net.Config.XmlConfigurator(ConfigFileExtension
= "log4net")]
//配置文件:log4net.config
log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]
log4net.Config.XmlConfigurator.Configure(new
FileInfo(@"F:/log4net.config"));
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!--
根节点的配置顺序:
renderer
appender
plugin
logger
category
root
loggerfactory
categoryfactory
-->
<!-- ========================================================================================= -->
<!--
org.apache.log4j.ConsoleAppender 控制台输出
org.apache.log4j.FileAppender 文件日志输出
org.apache.log4j.DailyRollingFileAppender 每个时间段产生一个日志文件
org.apache.log4j.RollingFileAppender 文件大小到达指定尺寸的时候产生一个新的文件
org.apache.log4j.WriterAppender 将日志信息以流格式发送到任意指定的地方
org.apache.log4j.net.SMTPAppender 发邮件输出日志
org.apache.log4j.net.SocketAppender Socket日志
org.apache.log4j.nt.NTEventLogAppender Window NT日志
org.apache.log4j.net.SyslogAppender
org.apache.log4j.net.JMSAppender
org.apache.log4j.AsyncAppender
org.apache.log4j.varia.NullAppender
org.apache.log4j.jdbc.JDBCAppender
-->
<!-- ========================================================================================= -->
<!--
控制台输出:org.apache.log4j.ConsoleAppender
Threshold=WARN 指定日志消息的输出最低层次。
ImmediateFlush=true 默认值是 true,意谓着所有的消息都会被立即输出。
Target=System.err 默认情况下是:System.out,指定输出控制台
-->
<appender name="Console" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="ALL"></param>
<param name="ImmediateFlush" value="true"></param>
<param name="Target" value="System.out"></param>
<layout class="org.apache.log4j.TTCCLayout" />
</appender>
<!-- ========================================================================================= -->
<!--
文件日志输出:org.apache.log4j.FileAppender
Threshold=WARN 指定日志消息的输出最低层次。
ImmediateFlush=true 默认值是 true,意谓着所有的消息都会被立即输出。
File=mylog.txt 指定消息输出到 mylog.txt 文件。
Append=false 默认值是 true,即将消息增加到指定文件中,false 指将消息覆盖指定的文件内容。
-->
<appender name="File" class="org.apache.log4j.FileAppender">
<param name="Threshold" value="ALL"></param>
<param name="ImmediateFlush" value="true"></param>
<param name="File" value="F:\\FileAppender.txt"></param>
<param name="Append" value="false"></param>
<layout class="org.apache.log4j.TTCCLayout" />
</appender>
<!-- ========================================================================================= -->
<!--
每个时间段产生一个日志文件:org.apache.log4j.DailyRollingFileAppender
Threshold=WARN 指定日志消息的输出最低层次。
ImmediateFlush=true 默认值是 true,意谓着所有的消息都会被立即输出。
File=mylog.txt 指定消息输出到 mylog.txt 文件。
Append=false 默认值是 true,即将消息增加到指定文件中,false 指将消息覆盖指定的文件内容。
DatePattern=.yyyy-ww 每周滚动一次文件,即每周产生一个新的文件。
当然也可以指定按月、周、天、时和分。即对应的格式如下:
.yyyy-MM 每月
.yyyy-ww 每周
.yyyy-MM-dd 每天
.yyyy-MM-dd-a 每天两次
.yyyy-MM-dd-HH 每小时
.yyyy-MM-dd-HH-mm 每分钟
-->
<appender name="DailyRollingFile" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Threshold" value="ALL"></param>
<param name="ImmediateFlush" value="true"></param>
<param name="File" value="F:\\DailyRollingFileAppender.txt"></param>
<param name="Append" value="false"></param>
<param name="DatePattern" value=".yyyy-MM-dd-HH-mm"></param>
<layout class="org.apache.log4j.TTCCLayout" />
</appender>
<!-- ========================================================================================= -->
<!--
文件大小到达指定尺寸的时候产生一个新的文件:org.apache.log4j.RollingFileAppender
Threshold=WARN 指定日志消息的输出最低层次。
ImmediateFlush=true 默认值是 true,意谓着所有的消息都会被立即输出。
File=mylog.txt 指定消息输出到 mylog.txt 文件。
Append=false 默认值是 true,即将消息增加到指定文件中,false 指将消息覆盖指定的文件内容。
MaxFileSize=100KB 后缀可以是 KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到 mylog.log.1 文件。
MaxBackupIndex=2 指定可以产生的滚动文件的最大数。
-->
<appender name="RollingFile" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="ALL"></param>
<param name="ImmediateFlush" value="true"></param>
<param name="File" value="F:\\RollingFileAppender.txt"></param>
<param name="Append" value="false"></param>
<param name="MaxFileSize" value="1KB"></param>
<param name="MaxBackupIndex" value="3"></param>
<layout class="org.apache.log4j.TTCCLayout" />
</appender>
<!-- ========================================================================================= -->
<!-- ========================================================================================= -->
<!--
org.apache.log4j.HTMLLayout 以HTML表格形式布局
org.apache.log4j.PatternLayout 可以灵活地指定布局模式
org.apache.log4j.xml.XMLLayout XML文件布局日志
org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等等信息
-->
<!-- ========================================================================================= -->
<!--
以HTML表格形式布局:org.apache.log4j.HTMLLayout
LocationInfo=true 默认值是false,输出java文件名称和行号
Title=日志信息 默认值是"Log4J Log Messages"
-->
<appender name="HTML" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.HTMLLayout">
<param name="LocationInfo" value="true"></param>
<param name="Title" value="日志信息"></param>
</layout>
</appender>
<!-- ========================================================================================= -->
<!--
可以灵活地指定布局模式:org.apache.log4j.PatternLayout
ConversionPattern=%m%n 指定怎样格式化指定的消息,如:%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
-->
<appender name="Pattern" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="级别:[%-6p] 时间:[%d{yyy-MMM-dd HH:mm:ss,SSS}] %-50l %m%n"></param>
</layout>
</appender>
<!-- ========================================================================================= -->
<!--
XML文件布局日志:org.apache.log4j.xml.XMLLayout
LocationInfo=true 默认值是 false,输出 java 文件和行号
-->
<appender name="XML" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.xml.XMLLayout">
<param name="LocationInfo" value="true"></param>
</layout>
</appender>
<!-- ========================================================================================= -->
<!-- ========================================================================================= -->
<logger name="ConsoleLog" additivity="false">
<level value="WARN" />
<appender-ref ref="Console" />
</logger>
<logger name="FileLog" additivity="false">
<level value="WARN" />
<appender-ref ref="File" />
</logger>
<logger name="DailyRollingFileLog" additivity="false">
<level value="WARN" />
<appender-ref ref="DailyRollingFile" />
</logger>
<logger name="RollingFileLog" additivity="false">
<level value="WARN" />
<appender-ref ref="RollingFile" />
</logger>
<logger name="HTMLLog" additivity="false">
<level value="WARN" />
<appender-ref ref="HTML" />
</logger>
<logger name="PatternLog" additivity="false">
<level value="WARN" />
<appender-ref ref="Pattern" />
</logger>
<logger name="XMLLog" additivity="false">
<level value="WARN" />
<appender-ref ref="XML" />
</logger>
<!-- ========================================================================================= -->
<!--
优先级:ALL < DEBUG < INFO <WARN < ERROR < FATAL < OFF
-->
<root>
<priority value="ALL" />
<appender-ref ref="Console" />
</root>
</log4j:configuration>
Log4Net使用详解的更多相关文章
- (转)log4net使用详解
说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...
- 转:log4net使用详解
说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...
- (转载)log4net 组件详解
1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是介绍如何在Visual S ...
- 第一节:框架前期准备篇之Log4Net日志详解
一. Log4Net简介 Log4net是从Java中的Log4j迁移过来的一个.Net版的开源日志框架,它的功能很强大,可以将日志分为不同的等级,以不同的格式输出到不同的存储介质中,比如:数据库.t ...
- Log4Net使用详解(续)
转:http://blog.csdn.net/zhoufoxcn/article/details/6029021 说明自从上次在2008年在博客上发表过有关log4net的用法介绍文章之后(网址:ht ...
- log4Net配置详解
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...
- Log4net 配置详解
首先需在config文件的<configSections>节点中增加子节点配置. <configSections> <section name="log4net ...
- Log4net 参数详解
<log4net> <!-- 错误日志类--> <logger name="logerror"> <level value="A ...
- Log4Net使用详解1
log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括MS SQL Server, Access, Oracle ...
随机推荐
- 如何实现ZBrush中的Alt和Shift键的快速运用
ZBrush是一个数字雕刻和绘画软件,它以强大的功能和直观的工作流程彻底改变了整个三维雕刻行业.在一个简洁的界面中,ZBrush®为当代数字艺术家提供了世界上最先进的工具.利用快捷键能使操作更快捷高效 ...
- hdu 5773 The All-purpose Zero 最长上升子序列+树状数组
题目链接:hdu 5773 The All-purpose Zero 官方题解:0可以转化成任意整数,包括负数,显然求LIS时尽量把0都放进去必定是正确的. 因此我们可以把0拿出来,对剩下的做O(nl ...
- 2014 UESTC 暑前集训队内赛(3) 部分解题报告
B.Battle for Silver 定理:完全图Kn是平面图当且仅当顶点数n<=4. 枚举所有完全图K1,K2,K3,K4,找出最大总权重. 代码: #include <iostrea ...
- Dijkstra求最短路径
单源点的最短路径问题:给定带权有向图G和源点V,求从V到G中其余各顶点的最短路径 Dijkstra算法描述如下: (1)用带权的邻接矩阵arcs表示有向图,arcs[i][j]表示弧<vi,vj ...
- JsonHelper
.net下的json序列化在以前没有Newtonsoft.Json崭露头角之前采用System.Web.Script.Serialization命名空间下的JavaScriptSerializer对象 ...
- dos命令行连接数据库
dos命令行连接数据库 (2012-03-22 21:26:16) 转载▼ 标签: it C:\Adminstrator> sqlplus "/as sysdba" 查看 ...
- <global-results>
全局result(global-results)有很多时候一个<result>可供很多<action>使用,这时可以使用<global-results>标签来定义全 ...
- poj1012
Joseph Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 52097 Accepted: 19838 Descript ...
- 网络请求怎么样和UI线程交互? Activity2怎么通知Activity1 更新数据
1.网络请求怎么样和UI线程交互? 目前我的做法是,建立线程池管理网络请求线程,通过添加task来新增网络请求.所有的网络操作通过统一的request来实现,网络返回结果通过回调onError和onS ...
- Ace 动画应用实例 ------启动欢迎界面
仔细观察手机应用很多都用到了动画效果 那么咱们也做一个 除了位移没有使用 其他都有 布局随便放张图片 public class SplashActivity extends Activity { pr ...