有一段时间没上论坛了。
今天正好有空,想写点什么,却发现对于Foxtable我已经变成一个新手了。想来想去,还是介绍一下怎么在foxtable里面使用log4net吧。
log4net是比较有名的开源日志组件,它可以帮助程序员将日志信息输出到各种目标(控制台、文件、数据库、发送邮件等)。比如记录一些关键操作信息到数据库,方便管理人员的跟踪。也可以在程序发生异常时,把异常信息记录到文件,或者(并且)发送邮件通知开发人员。
写代码时,不需要考虑日志的输出目标,具体是写文件还是发邮件是在配置文件中进行配置,程序即使在运行中,也可以修改配置,并立即生效。附件的配置只记录txt文件,其他类型输出的配置可以在网上找到,或者阅读官方说明文档。
Log4net使用比较简单。例如:
? 记录普通信息:
mylogger.Info("用户xxx登陆系统")
? 记录调试信息
mylogger.Debug("变量a的值为" + a)
? 记录异常信息
mylogger.Error("程序错误", ex);
ex。为捕获的异常。关于捕获异常,见:http://www.foxtable.com/help/topics/2070.htm
上面的myLogger是一个变量,它代表一个记录器。记录器一共有5中记录方法,除了上面出现的3中,还有 Warn、Fatal。
这5种方法使用完全相同,第一个参数是要输出的字符串,第二个方法是可选的异常对象。 它们没有实质的区别,只是代表信息不同重要级别:Debug < Info < Warn < Error< Fetal 。把信息分成5个等级后,可以修改配置,让组件只记录重要的日志,而忽略不重要的日志,以提高性能。
比如使用Debug方法输入开发人员关心的日志,项目交付后,修改配置。系统只记录Info级别以上的日志,并为Fetal级别的日志发送邮件。
如果日志不是太多,为了简单,也只使用一种方式记录日志,而不考虑级别问题。例如所有日志通过info方法记录。
Log4net可以使用多个记录器(例如每个模块使用一个记录器),并在配置文件里分别配置。下面演示的整个程序只使用一个记录器,即在全局代码里面声明一个记录器变量 mylogger,并在项目打开时初始化这个变量。
下面列出详细步骤:
1、复制log4net.dll到foxtable.exe目录。(附件中提供,也可以去网上下载)。
2、复制配置文件log4net.config到foxtable.exe目录。
3、添加对log4.net的引用。
4、全局代码声明记录器: Dim myLogger As log4net.Ilog
5、项目Initialize事件初始化记录器:
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config")) '读取配置文件
myLogger = log4net.LogManager.GetLogger("loggerName")
这里的log4net.config对应步骤2对应的配置文件名。loggerName对应记录器名称。由于我们整个程序只使用了一个记录器,并且不会再配置中单独配置这个记录器,所以名字可以随意取。
6、命令窗口测试myLogger对象:
mylogger.Info("记录日志")
mylogger.Info ("异常测试:",new Exception("12345"))
检查一下foxtable.exe目录,会发现多出一个logs文件夹,里面则是生成的日志文件。
这里的配置文件和输出文件都在foxtable.exe目录。对于发布后的程序foxtable.exe和项目文件在同一目录,但是对于未发布的项目,如果想Log4net的配置和输出在项目文件目录下,则需要对上面某几个不步骤做一些调整。
2、复制配置文件log4net.config到目录文件夹。
5、 配置文件相对路径"log4net.config" 修改为拼接的绝对路径 ProjectPath & "log4net.config"
如此,配置文件则改为项目文件目录了。
如果日志输出方式选择文件方式,则还需要在log4net.config中修改文件输出路径。可以将此输出路径写死为项目文件夹,如果感觉在配置文件里面把输出路径写死不太好,可以在第5步加载配置前,用代码读文件,替换字符串的方式修改配置文件。保存后再加载修改后的配置文件。(其实log4net 有加载配置文件后,直接修改配置对象的方法,这里不做介绍)
只有几行代码,我就不传示例项目了。
[此贴子已经被作者于2013-9-22 15:39:18编辑过]