AHCT.Log.NLogger是一个轻量级的.Net开源日志组件,通过使用它,我们只须通过一个配置文件的简单配置,不需要修改应用程序代码,就可以控制各种日志信息异步输出到log文件。
1、配置说明
配置节关键字 | 配置说明 |
_LOG_LEVEL_ | 日志级别配置,配置内容为:DEBUG|INFO|WARN|ERROR|FATAL (默认 ERROR)。如果配置为DEBUG,则记录DEBUG,INFO,WARN,ERROR,FATAL的log信息;如果配置为INFO则只记录INFO,WARN,ERROR,FATAL的log信息,而DEBUG信息不会记录。依次类推。 |
_LOG_FILE_ | 日志文件路径+文件名(不含文件扩展名),(如果配置节_LOG_FILE_未配置,则取默认值,默认文件名NLogger);建议这里明确填写具体完整的绝对路径(例如:C:\Log\NLogger,日志记录到C:\Log\目录下(如果目录不存在则会自动创建),日志文件名以NLogger为前缀开头)。 |
_LOG_FILE_MAX_SIZE_ | 日志文件的最大长度(单位:字节,不得小于1024字节,即1K), 默认1M(1M = 1*1024*1024=1048576) |
_LOG_SPLIT_ | 日志文件是否按名字空间分开存储标示,默认false。false:不分开,全部记录到一个文件;true:分开,按名字空间分开记录到各个文件。 |
_LOG_NS_DIV_COUNT_ | 当日志文件按命名空间分开存储时(即_LOG_SPLIT_=TRUE),命名空间长度最大截取到第几分段(以“.”分割)(该值必须大于0,方有效),(可选)默认命名空间全称 |
_LOG_NS_MAXLENGTH_ | 当日志文件按命名空间分开存储时(即_LOG_SPLIT_=TRUE),命名空间截取的最大长度(该值必须大于0,方有效),(可选)默认命名空间全称 |
_LOG_ASYN_ | 日志 异步写入标示(默认false) true使用异步方法写日志;false不使用异步方法写日志。 |
_LOG_ASYN_WAIT_ | 异步写入时,当日志队列为空的等待毫秒数 (必须大于等于0,为0则没有等待时间(较耗资源);可不配置,默认100毫秒)(_LOG_ASYN_必须配置TRUE,该项才起作用) |
_LOG_ASYN_IS_DAEMON_ | 异步写入线程是否设置为后台线程。(对应Thread.IsBackground属性) TRUE后台线程,FALSE普通(默认FALSE)(_LOG_ASYN_必须配置TRUE,该项才起作用) |
_LOG_FILE_SAVE_TIME_ | 日志文件的保存时间(单位:天,整数-默认30天)(值大于零方有效) |
配置节关键字是区分大小写的,要求全部大写,所有配置项都有默认值,不需要全部配置,可根据实际需要进行选择。配置项在系统首次加载时进行初始化,再次修改配置项需重启应用程序。日志级别可在线修改,适时记录不同的日志。日志文件的扩展名为(.log)。
这里的配置节可放在web.config或App.config中的appSettings节配置,当然也可以在指定的[key=value]配置文件中统一配置。若需要在配置文件中统一配置,需将该配置文件在当前系统环境变量中加入变量_LOG_ENV_CONFIG_FILE_,其值指向该配置文件的全路径。环境变量中还可以设置另一变量_LOG_ENV_PATH_FILE_,其值指向日志文件的存储路径,日志文件的存储路径寻址顺序是:如果配置节_LOG_FILE_未配置,则取该环境变量的值;如果环境变量值_LOG_ENV_PATH_FILE_也未配置则取%TEMP%对应的值;如果该%TEMP%值也没有则取当前运行程序所在目录。对于Web程序运行程序所在运行路径,在对应的IDE目录下(以VS2005为例,在Microsoft Visual Studio8\Common7\IDE\)。
2、日志组件的使用
AHCT.Log.NLogger日志组件的使用简单,只须引入AHCT.Log.NLogger即可,AHCT.Log.NLogger提供五种级别的日志记录(DEBUG|INFO|WARN|ERROR|FATAL),最低DEBUG,最高FATAL,当配置的级别大于等于对应级别时,会自动记录日志,如:当前配置_LOG_LEVEL_值为ERROR时,DEBUG|INFO|WARN三种级别日志将直接跳过不记录,ERROR|FATAL级别的日志会记录。AHCT.Log.NLogger提供了单实例接口NLogger.GetInstance(),支持多线程并发操作,使用时可直接调用获取日志实例对象。同时各级别日志记录接口(Debug|Info|Warn|Error|Fatal)均有不同的重载方式。另外,日志文件会自动管理,自动执行压缩或将过期文件自动删除,以节省存储空间。
示例代码如下:
using AHCT.Log; |
NLogger.GetInstance().Debug("DemoTest打印Debug日志。"); NLogger.GetInstance().Info("DemoTest打印Info日志。"); NLogger.GetInstance().Warn("DemoTest打印Warn日志。"); NLogger.GetInstance().Error("DemoTest打印Error日志。"); NLogger.GetInstance().Fatal("DemoTest打印Fatal日志。"); |
NLogger logger = NLogger.GetInstance(); logger.Debug("测试环境打印出的Debug日志"); logger.Info("测试环境打印出的Info日志"); logger.Warn("测试环境打印出的Warn日志"); logger.Error("测试环境打印出的Error日志"); logger.Fatal("测试环境打印出的Fatal日志"); |
开源地址:
http://my.oschina.net/ahchutao
http://www.oschina.net/p/ahct-log-nlogger
http://git.oschina.net/lxchutao/AHCT.Log.NLogger