Log4Net使用详解.docx
- 文档编号:1959421
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:38
- 大小:572.85KB
Log4Net使用详解.docx
《Log4Net使用详解.docx》由会员分享,可在线阅读,更多相关《Log4Net使用详解.docx(38页珍藏版)》请在冰点文库上搜索。
Log4Net使用详解
Log4net使用详解
说明:
本程序演示如何利用log4net记录程序日志信息。
log4net是一个功能著名的开源日志记录组件。
利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MSSQLServer,Access,Oracle9i,Oracle8i,DB2,SQLite)中。
并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:
FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。
要想获取最新版本的log4net组件库,可以到官方网站http:
//logging.apache.org/log4net/下载。
现在的最新版本是1.2.10。
下面的例子展示了如何利用log4net记录日志 。
首先从官方网站下载最近版本的log4net组件,现在的最新版本是1.2.10。
在程序中我们只需要log4net.dll文件就行了,添加对log4net.dll的引用,就可以在程序中使用了。
接着我们配置相关的配置文件(WinForm对应的是*.exe.config,WebForm对应的是*.config),本实例中是控制台应用程序,配置如下(附各配置的说明):
xml version="1.0" encoding="utf-8" ?
>
--定义输出到文件中-->
--定义文件存放位置-->
log4netfile.txt" /> mm: ss" /> --每条日志末尾的文字说明--> --输出格式--> --样例: 2008-03-26 13: 42: 32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> %date 线程ID: [%thread] 日志级别: %-5level 出错类: %logger property: [%property{NDC}] - 错误描述: %message%newline" /> --定义输出到控制台命令行中--> --定义输出到windows事件中--> --定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb--> log4net.mdb" /> --定义各个参数--> --定义日志的输出媒介,下面定义日志以四种方式输出。 也可以下面的按照一种类型或其他类型输出。 --> --文件形式记录日志--> --控制台控制显示日志--> --Windows事件日志--> -- 如果不启用相应的日志记录,可以通过这种方式注释掉 --> 程序文件: using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Reflection; using log4net; //注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息 //如果是WinForm(假定程序为MyDemo.exe,则需要一个MyDemo.exe.config文件) //如果是WebForm,则从web.config中读取相关信息 [assembly: log4net.Config.XmlConfigurator(Watch = true)] namespace Log4NetDemo { /// /// 说明: 本程序演示如何利用log4net记录程序日志信息。 log4net是一个功能著名的开源日志记录组件。 /// 利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)。 /// 下面的例子展示了如何利用log4net记录日志 /// 作者: 周公 /// 时间: 2008-3-26 /// 首发地址: /// public class MainClass { public static void Main(string[] args) { //Application.Run(new MainForm()); //创建日志记录组件实例 ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); //记录错误日志 log.Error("error",new Exception("发生了一个异常")); //记录严重错误 log.Fatal("fatal",new Exception("发生了一个致命错误")); //记录一般信息 log.Info("info"); //记录调试信息 log.Debug("debug"); //记录警告信息 log.Warn("warn"); Console.WriteLine("日志记录完毕。 "); Console.Read(); } } } 运行结果: 控制台上的输出 日志文件内容 首先说明一点的是,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? 1. 2. 3. 除此之外,还要在顶级节点 在 具体说来有如下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): 当前日志对象的名称,例如: %f(file): 输出语句所在的文件名。 %l(line): 输出语句所在的行号。 %数字: 表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。 下面以一个实际的例子来说明问题,比如在配置中有“%date[%thread](%file: %line)%-5level%logger[%property{NDC}]-%message%newline”,那么实际的日志中会是如下格式: “记录时间: 2010-11-1716: 16: 36,561线程ID: [9]日志级别: 文件: 所在行ERROR出错类: Log4NetDemo.Programproperty: [(null)]-错误描述: error System.Exception: 在这里发生了一个异常,ErrorNumber: 2036084948” 关于对数据库的支持 前面已经说过,log4net是支持包括MSSQLServer,Access,Oracle9i,Oracle8i,DB2,SQLite在内的数据库的,如果是文件型数据库(如Access或SQLite)的话就需要指定数据库文件的位置(在Web中最好指定在有读写权限的文件夹下,并且实现创建好表),如果是网络数据库就需要指定正确的数据库连接字符串。 比如要记录到Oracle数据库中,在配置文件中可以增加一个 1. 2. 3. 4. log_date, : thread, : log_level, : logger, : message)" /> 5. 6. 7. log_date" /> 8. 9. 10. 11. 12. thread" /> 13. 14. 15. 16. 17. 18. 19. 20. log_level" /> 21. 22. 23. 24. 25. 26. 27. 28. logger" /> 29. 30. 31. 32. 33. 34. 35.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Log4Net 使用 详解