ahct.log.JLogger是一个轻量级的Java开源日志组件,通过使用它,我们只须通过一个配置文件的简单配置,不需要修改应用程序代码,就可以控制各种日志信息异步输出到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_未配置,则取默认值,默认文件名JLogger);建议这里明确填写具体完整的绝对路径(例如:C:\Log\JLogger,日志记录到C:\Log\目录下(如果目录不存在则会自动创建),日志文件名以JLogger为前缀开头)。

_LOG_FILE_MAX_SIZE_

日志文件的最大长度(单位:字节,不得小于1024字节,即1K), 默认1M(1M = 1*1024*1024=1048576)
当日志文件超过该配置值时会自动重建。

_LOG_SPLIT_

日志文件是否按package包名称空间分开标示,默认false。false:不分开,全部记录到一个文件;true:分开,按名字空间分开记录到各个文件。

_LOG_PK_DIV_COUNT_

当日志文件按package包名称空间分开存储时(即_LOG_SPLIT_=TRUE),包名称长度最大截取到第几分段(以“.”分割)(值必须大于0,方有效) ,(可选)默认命名空间全称

_LOG_ASYN_

日志 异步写入标示(默认false) true使用异步方法写日志;false不使用异步方法写日志。

_LOG_ASYN_WAIT_

异步写入时,当日志队列为空的等待毫秒数 (必须大于等于0,为0则没有等待时间(较耗资源);可不配置,默认100毫秒)(_LOG_ASYN_必须配置TRUE,该项才起作用)

_LOG_ASYN_IS_DAEMON_

异步写入线程是否设置为后台线程。(对应setDaemon(true);) TRUE后台线程,FALSE普通(默认FALSE)(_LOG_ASYN_必须配置TRUE,该项才起作用)

_LOG_FILE_SAVE_TIME_

日志文件的保存时间(单位:天,整数-默认30天)(值大于零方有效)

         配置节关键字是区分大小写的,要求全部大写,所有配置项都有默认值,不需要全部配置,可根据实际需要进行选择。配置项在系统首次加载时进行初始化,再次修改配置项需重启应用程序。日志级别可在线修改,适时记录不同的日志。日志文件的扩展名为(.log)。

         这些配置节默认放在一个配置文件JLogger.properties中,其目录位置寻址方式:先从环境变量_LOG_CONFIG_PATH_FILE_设置的路径下寻找,如果没有找到再从当前启动路径下寻找,找到就以此为准,都没有则取各配置的默认值。环境变量_LOG_CONFIG_PATH_FILE_的值可以直接指定到配置文件全路径名(如D:\XXLogger.properties),此时该配置文件名称可自行指定;也可以只指定到路径并以文件路径分隔符结尾(如D:\),此时组件会自动寻找名称为JLogger.properties的配置文件;如果环境变量_LOG_CONFIG_PATH_FILE_未配置,则从当前启动路径下寻找JLogger.properties配置文件。

 

2、日志组件的使用

         ahct.log.JLogger日志组件的使用简单,只须引入ahct.log.JLogger即可,ahct.log.JLogger提供五种级别的日志记录(DEBUG|INFO|WARN|ERROR|FATAL),最低DEBUG,最高FATAL,当配置的级别大于等于对应级别时,会自动记录日志,如:当前配置_LOG_LEVEL_值为ERROR时,DEBUG|INFO|WARN三种级别日志将直接跳过不记录,ERROR|FATAL级别的日志会记录。ahct.log.JLogger提供了单实例接口JLogger.getInstance(),支持多线程并发操作,使用时可直接调用获取日志实例对象。同时各级别日志记录接口(Debug|Info|Warn|Error|Fatal)均有不同的重载方式。另外,日志文件会自动管理,自动执行压缩或将过期文件自动删除,以节省存储空间。

 

示例代码如下:

import ahct.log.JLogger;

JLogger.getInstance().Debug("测试环境打印出的Debug日志");
JLogger.getInstance().Info("测试环境打印出的Info日志");
JLogger.getInstance().Warn("测试环境打印出的Warn日志");
JLogger.getInstance().Error("测试环境打印出的Error日志");
JLogger.getInstance().Fatal("测试环境打印出的Fatal日志");
JLogger logger = JLogger.getInstance();
logger.Debug("测试环境打印出的Debug日志");
logger.Info("测试环境打印出的Info日志");
logger.Warn("测试环境打印出的Warn日志");
logger.Error("测试环境打印出的Error日志");
logger.Fatal("测试环境打印出的Fatal日志");