log4net配置及使用.docx
《log4net配置及使用.docx》由会员分享,可在线阅读,更多相关《log4net配置及使用.docx(33页珍藏版)》请在冰豆网上搜索。
log4net配置及使用
第一步:
在项目引用log4net.dll文件
第二步:
在Web.config文件中加入一句代码,位置如下:
第三步:
建立一个单独的配置文件,文件名为:
log4net.config
(这个配置文件会在App_Data目录下按日期每天产生一个日志文件,如:
Logs_20090703.txt)
log4net.config配置文件内容:
xmlversion="1.0"encoding="utf-8"?
>
--OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL-->
--SetrootloggerleveltoERRORanditsappenders-->
--PrintonlymessagesoflevelDEBUGoraboveinthepackages-->
--切割最多文件数-->
--每个文件的大小-->
第四步:
(这步很关键)(应该建立web项目而不是网站)
在文件AssemblyInfo.cs加入一句代码,AssemblyInfo.cs的路径所在Properties目录下
加入的代码如下:
//日志组件配置
[assembly:
log4net.Config.DOMConfigurator(ConfigFile="log4net.config",Watch=true)]
第五步:
开始使用log4net的.cs代码
usinglog4net;
usingSystem.Configuration;
objecto=ConfigurationSettings.GetConfig("log4net");
log4net.Config.DOMConfigurator.Configure(oasSystem.Xml.XmlElement);(此处的代码已过时)
log4net.ILoglogger=log4net.LogManager.GetLogger("WebLogger");
logger.Debug("调试");
logger.Error("这是一个错误日志");
logger.Fatal("这是一个致命的错误日志");
logger.Warn("这是一条警告日志");
logger.Info("这是一条普通信息");
ILoglog=log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//记录错误日志
log.Error("error",newException("发生了一个异常"));
//记录严重错误
log.Fatal("fatal",newException("发生了一个致命错误"));
//记录一般信息
log.Info("info");
//记录调试信息
log.Debug("debug");
//记录警告信息
log.Warn("warn");
Console.WriteLine("日志记录完毕。
");
Console.Read();
第二部分详细说明:
涉及多种输出途径
下面的例子展示了如何利用log4net记录日志。
首先从官方网站下载最近版本的log4net组件,现在的最新版本是1.2.10。
在程序中我们只需要log4net.dll文件就行了,添加对log4net.dll的引用,就可以在程序中使用了。
接着我们配置相关的配置文件(WinForm对应的是*.exe.config,WebForm对应的是*.config),本实例中是控制台应用程序,配置如下(附各配置的说明):
xmlversion="1.0"encoding="utf-8"?
>
--定义输出到文件中-->
--定义文件存放位置-->
log4netfile.txt"/>
mm:
ss"/>
--每条日志末尾的文字说明-->
--输出格式-->
--样例:
2008-03-2613:
42:
32,111[10]INFOLog4NetDemo.MainClass[(null)]-info-->
%date线程ID:
[%thread]日志级别:
%-5level出错类:
%loggerproperty:
[%property{NDC}]-错误描述:
%message%newline"/>
--定义输出到控制台命令行中-->
--定义输出到windows事件中-->
--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb-->
log4net.mdb"/>
--定义各个参数-->
--定义日志的输出媒介,下面定义日志以四种方式输出。
也可以下面的按照一种类型或其他类型输出。
-->
--文件形式记录日志-->
--控制台控制显示日志-->
--Windows事件日志-->
--如果不启用相应的日志记录,可以通过这种方式注释掉
-->
程序文件:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Reflection;
usinglog4net;
//注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息
//如果是WinForm(假定程序为MyDemo.exe,则需要一个MyDemo.exe.config文件)
//如果是WebForm,则从web.config中读取相关信息
[assembly:
log4net.Config.XmlConfigurator(Watch=true)]
namespaceLog4NetDemo
{
///
///说明:
本程序演示如何利用log4net记录程序日志信息。
log4net是一个功能著名的开源日志记录组件。
///利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中(包括MSSQLServer,Access,Oracle9i,Oracle8i,DB2,SQLite)。
///下面的例子展示了如何利用log4net记录日志
///作者:
周公
///时间:
2008-3-26
///首发地址:
///
publicclassMainClass
{
publicstaticvoidMain(string[]args)
{
//Application.Run(newMainForm());
//创建日志记录组件实例
ILoglog=log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//记录错误日志
log.Error("error",newException("发生了一个异常"));
//记录严重错误
log.Fatal("fatal",newException("发生了一个致命错误"));
//记录一般信息
log.Info("info");
//记录调试信息
log.Debug("debug");
//记录警告信息
log.Warn("warn");
Console.WriteLine("日志记录完毕。
");
Console.Read();
}
}
}
详细配置说明
说明自从上次在2008年在博客上发表过有关log4net的用法介绍文章之后(网址:
首先说明一点的是,log4net解决的问题是提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MSSQLServer,Access,Oracle9i,Oracle8i,DB2,SQLite)中,一般来说我们只需要提供一个描述性的字符串,然后log4net就会自动提供有关运行时的一些信息。
Log4Net的版本仍是1.2.10(2008年我写博文的时候也是这个版本),有.NET1.0和.NET1.1和.NET2.0版本,如果有正在使用高于.NET2.0开发的也不用担心,可以直接引用这个类库,像在.NET2.0中开发一样,它的网址是:
http:
//logging.apache.org/log4net/
关于在Web中支持的问题
在我们开发项目时都会使用到config文件,可以在config文件中配置log4net。
这一点Web项目和WinForm项目都是一样的。
需要注意的是,因为在Web项目中一般以较低权限的角色来运行Web项目的,所以在使用文件型日志时要注意不要放在本项目根文件夹之外。
在config文件中的配置
要使用log4net,首先要在config文件的节点中增加配置(如果没有这个节点请手动增加),如下:
viewplaincopytoclipboardprint?
除此之外,还要在顶级节点下增加子节点。
在节点下就可以增加子节点,每个子节点代表一种记录日志的方式(仅在这里配置了不代表启用了)。
具体说来有如下Appender:
AdoNetAppender:
利用ADO.NET记录到数据库的日志。
AnsiColorTerminalAppender:
在ANSI窗口终端写下高亮度的日志事件。
AspNetTraceAppender:
能用中Trace的方式查看记录的日志。
BufferingForwardingAppender:
在输出到子Appenders之前先缓存日志事件。
ConsoleAppender:
将日志输出到控制台。
EventLogAppender:
将日志写到WindowsEventLog.
FileAppender:
将日志写到文件中。
LocalSyslogAppender:
将日志写到localsyslogservice(仅用于UNIX环境下).
MemoryAppender:
将日志存到内存缓冲区。
NetSendAppender:
将日志输出到WindowsMessengerservice.这些日志信息将在用户终端的对话框中显示。
RemoteSyslogAppender:
通过UDP网络协议将日志写到Remotesyslogservice。
RemotingAppender:
通过.NETRemoting将日志写到远程接收端。
RollingFileAppender:
将日志以回滚文件的形式写到文件中。
SmtpAppender:
将日志写到邮件中。
TraceAppender:
将日志写到.NETtrace系统。
UdpAppender:
将日志connectionlessUDPdatagrams的形式送到远程宿主或以UdpClient的形式广播。
关于使用log4net中可能会使用到的一些参数
%m(message):
输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(newline):
换行
%d(datetime):
输出当前语句运行的时刻
%r(runtime):
输出程序从运行到执行到当前语句时消耗的毫秒数
%t(threadid):
当前语句所在的线程ID
%p(priority):
日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):
当前日志对象的名称,例如