Skip to content
This repository has been archived by the owner on Jan 9, 2021. It is now read-only.

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.");
}