演示如何利用log4net记录程序日志信息
log4net是一个功能著名的开源日志记录组件。利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括 MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错 误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。要想获取最新版本的log4net组件库,可以到官方 网站http://logging.apache.org/log4net/下载。现在的最新版本是1.2.11。
log4net示例步骤:
1.添加log4net.dll引用
2.配置log4net文件
文件名的命名规则(WinForm对应的是*.exe.config,WebForm对应的是*.config);配置文件内容如下:
<?xmlversion="1.0"encoding="utf-8"?><configuration><configSections><sectionname="log4net"type="System.Configuration.IgnoreSectionHandler"/></configSections><!--Thissectioncontainsthelog4netconfigurationsettings--><log4net><!--Definesomeoutputappenders--><appendername="LogFileAppender"type="log4net.Appender.RollingFileAppender"><paramname="File"value="Log/log.txt"/><paramname="AppendToFile"value="true"/><paramname="RollingStyle"value="Date"/><paramname="DatePattern"value="yyyy.MM.dd"/><paramname="StaticLogFileName"value="true"/><layouttype="log4net.Layout.PatternLayout"><!--每条日志末尾的文字说明--><!--<footervalue="byXMGPS"/>--><!--%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个字符则以空格填充。--><paramname="ConversionPattern"value="datetime:%dthreadid:[%t]line:%lclass:%c-%m%n"/></layout></appender><!--Setuptherootcategory,addtheappendersandsetthedefaultpriority--><root><levelvalue="ALL"/><!--文件形式记录日志--><appender-refref="LogFileAppender"/></root></log4net></configuration>
注意:将配置好的文件放置到您的可执行目录下;eg:
3.编写代码:
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Reflection;usinglog4net;//注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息//如果是WinForm(假定程序为Log4netDemo.exe,则需要一个Log4netDemo.exe.config文件);//将Log4netDemo.exe.config文件拷贝到可执行文件目录下;//[assembly:log4net.Config.XmlConfigurator(Watch=true)](在需要使用log4net的类的namespace处),如果没有这句就会在调试时得到如下留言中所说的“程序调试起来时isDebugEnable"的情况//如果你嫌麻烦,只需要在包含Main()的类中加[assembly:log4net.Config.XmlConfigurator(Watch=true)][assembly:log4net.Config.XmlConfigurator(Watch=true)]namespaceLog4netDemo{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbttnCreateLog_Click(objectsender,EventArgse){//创建日志记录组件实例ILoglog=log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);switch(comStyle.Text){case"致命错误":log.Fatal("Fatal",newException(txtMessage.Text));break;case"一般错误":log.Error("Error",newException(txtMessage.Text));break;case"警告信息":log.Warn("Warn",newException(txtMessage.Text));break;case"一般信息":log.Info("Info",newException(txtMessage.Text));break;case"调试信息":log.Debug("Debug",newException(txtMessage.Text));break;default:break;}MessageBox.Show("测试成功!");}privatevoidcomStyle_SelectedIndexChanged(objectsender,EventArgse){switch(comStyle.Text){case"致命错误":txtMessage.Text="致命错误!";break;case"一般错误":txtMessage.Text="一般错误!";break;case"警告信息":txtMessage.Text="警告信息!";break;case"一般信息":txtMessage.Text="一般信息!";break;case"调试信息":txtMessage.Text="调试信息!";break;default:break;}}}}
如需要请参考上传的附件
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。