网上已经有很多关于Log4Net的用法的文章,本人还在写的原因是希望与大家多交流和加深印象。在此也感谢
长风破浪。我是在他的文章基础上学习Log4Net的用法的;现在我将分以下几步介绍我发法的过程。
首先:建立项目并添加Log4Net的引用,你可以到
http://logging.apache.org/log4net/downloads.html上去下载。
其次: 在文件AssemblyInfo.cs下面加入
[assembly:log4net.Config.XmlConfigurator(ConfigFile="XMLFile1.xml",Watch=true)]
其中是ConfigFile="XMLFile1.xml" 是你的配置文件名称,并在文件Global.asax中protected void Application_Start(Object sender, EventArgs e)中加上 log4net.Config.XmlConfigurator.Configure();
再次:就是配制Log4Net需要的配制文件了,这里有两中方式:一种是写文本文档,一种是写到数据库;
写到文本文档的配制方式为:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net-net-1.0"
/>
</configSections>
<log4net debug="false">
![](/Images/OutliningIndicators/None.gif)
<!-- 定义根日志对象 里面只有两个属性 level 和 appender-ref
![](/Images/OutliningIndicators/None.gif)
level 一个
![](/Images/OutliningIndicators/None.gif)
appender-ref 可以多个 即定义支持使用的多个Appender对象
![](/Images/OutliningIndicators/None.gif)
-->
![](/Images/OutliningIndicators/None.gif)
<root>
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
<level value="DEBUG" />
![](/Images/OutliningIndicators/None.gif)
<appender-ref ref="LogFileAppender" />
![](/Images/OutliningIndicators/None.gif)
</root>
![](/Images/OutliningIndicators/None.gif)
<!-- 具体定义支持某个Appender对象
![](/Images/OutliningIndicators/None.gif)
LogFileAppender为Appender对象的名称
![](/Images/OutliningIndicators/None.gif)
type为Appender对象的类型
![](/Images/OutliningIndicators/None.gif)
有如下的
![](/Images/OutliningIndicators/None.gif)
log4net.Appender.AdoNetAppender;
![](/Images/OutliningIndicators/None.gif)
log4net.Appender.UdpAppender;
![](/Images/OutliningIndicators/None.gif)
log4net.Appender.ConsoleAppender
![](/Images/OutliningIndicators/None.gif)
在命名空见log4net.Appender下面还有很多
![](/Images/OutliningIndicators/None.gif)
如果下载了,去文件:log4net-1.2.10\doc\release\config-examples.html
![](/Images/OutliningIndicators/None.gif)
上面还有很多例子
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
不同的Appender对象还有不同的param
![](/Images/OutliningIndicators/None.gif)
具体可以去config-examples.html
![](/Images/OutliningIndicators/None.gif)
-->
![](/Images/OutliningIndicators/None.gif)
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
![](/Images/OutliningIndicators/None.gif)
<!--
![](/Images/OutliningIndicators/None.gif)
定义文件和文件的路径 ,特别注意
![](/Images/OutliningIndicators/None.gif)
如果未有指定路径有可能出现错误 ,具体原因目前不清楚
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
-->
![](/Images/OutliningIndicators/None.gif)
<param name="File" value="E:\Applog.txt" />
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
<param name="datePattern" value="yyyy-MM-dd HH:mm" />
![](/Images/OutliningIndicators/None.gif)
<!--
![](/Images/OutliningIndicators/None.gif)
-->
![](/Images/OutliningIndicators/None.gif)
<param name="AppendToFile" value="true" />
![](/Images/OutliningIndicators/None.gif)
<!--
![](/Images/OutliningIndicators/None.gif)
-->
![](/Images/OutliningIndicators/None.gif)
<layout type="log4net.Layout.PatternLayout">
![](/Images/OutliningIndicators/None.gif)
<param name="ConversionPattern" value="%d [%t] %-%L-%F-5p %c [%x] - %m%n" />
![](/Images/OutliningIndicators/None.gif)
</layout>
![](/Images/OutliningIndicators/None.gif)
</appender>
![](/Images/OutliningIndicators/None.gif)
</log4net>
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
</configuration>
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
level 是他的级别,主要取值
Level有以下几种取值
级别 |
允许的方法 |
Boolean属性 |
优先级别 |
OFF |
|
|
Highest |
FATAL |
void Fatal(...); |
bool IsFatalEnabled; |
|
RROR |
void Error(...); |
bool IsErrorEnabled; |
|
WARN |
void Warn(...); |
bool IsWarnEnabled; |
|
INFO |
void Info(...); |
bool IsInfoEnabled; |
|
DEBUG |
void Debug(...); |
bool IsDebugEnabled; |
|
ALL |
|
|
Lowest |
<param name="File" value="E:\Applog.txt" />
文件保存的地址
<param name="datePattern" value="yyyy-MM-dd HH:mm" />
日期的格式
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
写入日志的基本信息;我看见了的有以下几种:
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
模式字符串为:%-10c -%m%n
代码为:
ILog log=LogManager.GetLogger(“Exam.Log”);
log.Debug(“Hello”);
则输出为下面的形式:
Exam.Log - Hello
%L:输出语句所在的行号
%F:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:
176 [main] INFO org.foo.Bar - Located nearest gas station.
第二种写入数据库的方式:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
![](/Images/OutliningIndicators/None.gif)
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
![](/Images/OutliningIndicators/None.gif)
</configSections>
![](/Images/OutliningIndicators/None.gif)
<log4net debug="false">
![](/Images/OutliningIndicators/None.gif)
<root>
![](/Images/OutliningIndicators/None.gif)
<level value="ALL" />
![](/Images/OutliningIndicators/None.gif)
<appender-ref ref="ADONetAppender" />
![](/Images/OutliningIndicators/None.gif)
</root>
![](/Images/OutliningIndicators/None.gif)
<!--
![](/Images/OutliningIndicators/None.gif)
定义loger的名称和使用的appender
![](/Images/OutliningIndicators/None.gif)
-->
![](/Images/OutliningIndicators/None.gif)
<logger name="AA">
![](/Images/OutliningIndicators/None.gif)
<level value="ALL"/>
![](/Images/OutliningIndicators/None.gif)
<appender-ref ref="ADONetAppender" />
![](/Images/OutliningIndicators/None.gif)
</logger>
![](/Images/OutliningIndicators/None.gif)
<appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
![](/Images/OutliningIndicators/None.gif)
<!--
![](/Images/OutliningIndicators/None.gif)
定义几条存入数据库 有2条时才写入数据库,没有两条叫缓存
![](/Images/OutliningIndicators/None.gif)
-->
![](/Images/OutliningIndicators/None.gif)
<bufferSize value="2" />
![](/Images/OutliningIndicators/None.gif)
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
![](/Images/OutliningIndicators/None.gif)
<connectionString value="database=test;server=.;User ID=sa;Password=" />
![](/Images/OutliningIndicators/None.gif)
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
![](/Images/OutliningIndicators/None.gif)
<parameter>
![](/Images/OutliningIndicators/None.gif)
<parameterName value="@log_date" />
![](/Images/OutliningIndicators/None.gif)
<dbType value="DateTime" />
![](/Images/OutliningIndicators/None.gif)
<layout type="log4net.Layout.RawTimeStampLayout" />
![](/Images/OutliningIndicators/None.gif)
</parameter>
![](/Images/OutliningIndicators/None.gif)
<parameter>
![](/Images/OutliningIndicators/None.gif)
<parameterName value="@thread" />
![](/Images/OutliningIndicators/None.gif)
<dbType value="String" />
![](/Images/OutliningIndicators/None.gif)
<size value="255" />
![](/Images/OutliningIndicators/None.gif)
<layout type="log4net.Layout.PatternLayout">
![](/Images/OutliningIndicators/None.gif)
<conversionPattern value="%thread" />
![](/Images/OutliningIndicators/None.gif)
</layout>
![](/Images/OutliningIndicators/None.gif)
</parameter>
![](/Images/OutliningIndicators/None.gif)
<parameter>
![](/Images/OutliningIndicators/None.gif)
<parameterName value="@log_level" />
![](/Images/OutliningIndicators/None.gif)
<dbType value="String" />
![](/Images/OutliningIndicators/None.gif)
<size value="50" />
![](/Images/OutliningIndicators/None.gif)
<layout type="log4net.Layout.PatternLayout">
![](/Images/OutliningIndicators/None.gif)
<conversionPattern value="%level" />
![](/Images/OutliningIndicators/None.gif)
</layout>
![](/Images/OutliningIndicators/None.gif)
</parameter>
![](/Images/OutliningIndicators/None.gif)
<parameter>
![](/Images/OutliningIndicators/None.gif)
<parameterName value="@logger" />
![](/Images/OutliningIndicators/None.gif)
<dbType value="String" />
![](/Images/OutliningIndicators/None.gif)
<size value="255" />
![](/Images/OutliningIndicators/None.gif)
<layout type="log4net.Layout.PatternLayout">
![](/Images/OutliningIndicators/None.gif)
<conversionPattern value="%logger" />
![](/Images/OutliningIndicators/None.gif)
</layout>
![](/Images/OutliningIndicators/None.gif)
</parameter>
![](/Images/OutliningIndicators/None.gif)
<parameter>
![](/Images/OutliningIndicators/None.gif)
<parameterName value="@message" />
![](/Images/OutliningIndicators/None.gif)
<dbType value="String" />
![](/Images/OutliningIndicators/None.gif)
<size value="4000" />
![](/Images/OutliningIndicators/None.gif)
<layout type="log4net.Layout.PatternLayout">
![](/Images/OutliningIndicators/None.gif)
<conversionPattern value="%message" />
![](/Images/OutliningIndicators/None.gif)
</layout>
![](/Images/OutliningIndicators/None.gif)
</parameter>
![](/Images/OutliningIndicators/None.gif)
<parameter>
![](/Images/OutliningIndicators/None.gif)
<parameterName value="@exception" />
![](/Images/OutliningIndicators/None.gif)
<dbType value="String" />
![](/Images/OutliningIndicators/None.gif)
<size value="2000" />
![](/Images/OutliningIndicators/None.gif)
<layout type="log4net.Layout.ExceptionLayout" />
![](/Images/OutliningIndicators/None.gif)
</parameter>
![](/Images/OutliningIndicators/None.gif)
</appender>
![](/Images/OutliningIndicators/None.gif)
</log4net>
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
</configuration>
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
注意数据库联接,还有参数等;
最后:在你需要的地方引用
log4net.ILog log = log4net.LogManager.GetLogger("guojiang");
log.Info("werwesdfsd!"); 接OK了