This repository has been archived by the owner on Jan 9, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 28
YMP框架日志模块使用详解
suninformation edited this page Jul 25, 2013
·
1 revision
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "/org/apache/log4j/xmllog4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Root日志记录器配置,适配框架及其它开源项目的日志内容输出 -->
<appender name="RootFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${LOGS_DIR}/logger-root.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyMMddHH" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}] [%p] [%l] %x - %m%n" />
</layout>
</appender>
<!-- 具体业务日志记录器配置 -->
<appender name="FileAppender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${LOGS_DIR}/logger-default.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyMMddHH" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>
<appender name="TestFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${LOGS_DIR}/logger-test.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyMMddHH" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>
<!-- 日志记录器定义,可定义多个记录器 -->
<logger name="default">
<level value="debug" />
<appender-ref ref="FileAppender" />
</logger>
<logger name="test">
<level value="debug" />
<appender-ref ref="TestFileAppender" />
</logger>
<!-- 根logger的设置-->
<root>
<priority value ="debug"/>
<appender-ref ref="RootFileAppender"/>
</root>
</log4j:configuration>
目前流行的日志框架有apache-commons-logging和Log4J等,为了统一日志文件的管理和适配各类第三方工具包日志输出,需要在类路径下提供commons-logging.properties配置文件,将commons-logging的日志记录器实现类设置成Log4J,文件内容如下:
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
调用日志模块对象的初始化方法,代码如下:
Logs.initialize(new ILogConfig() {
// 设置log4j的配置文件
public String getLogCfgFile() {
if (Cfgs.isInited()) {
return Cfgs.getUserDir() + "cfgs/log4j.xml";
}
return RuntimeUtils.getRootPath() + "cfgs/log4j.xml";
}
// 设置日志文件的输出路径
public String getLogOutputDir() {
if (Cfgs.isInited()) {
return Cfgs.getUserDir() + "logs";
}
return RuntimeUtils.getRootPath() + "logs";
}
// 设置默认日志记录器名称
public String getLoggerName() {
return "default";
}
// 设置日志记录器级别
public LogLevel getLogLevel() {
return LogLevel.DEBUG;
}
// 设置是否控制台输出
public boolean allowPrintConsole() {
return true;
}
// 设置日志记录器接口实现类
public ILogger getLoggerClassImpl() {
return new DefaultLog4JLogger();
}
});
在任何位置编写如下代码进行日志输出:
Logs.debug("hello world!");
Logs.warn("exception:", e);
日志模块默认仅初始化默认日志记录器,若要使用其它记录器,需要先创建它,代码如下:
// 创建名称为"test"的日志记录器
ILogger _log = Logs.create(LogLevel.DEBUG, "test");
// 测试日志输出
_log.info("log test.");
// 销毁日志记录器
Logs.release("test");
// 判断记录器是否存在
if (Logs.has("test")) {
Logs.get("test").info("log test.");
}