YMP框架日志模块使用详解

技术文档网 2021-04-29
日志模块使用详解

日志模块配置文件

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

相关文章

  1. 基于-SLF4J-MDC-机制的日志链路追踪配置属性

    ums: # ================ 基于 SLF4J MDC 机制的日志链路追踪配置属性 ================ mdc: # 是否支持基于 SLF4J MDC

  2. ajax-跨域访问

    ajax 跨域访问 &lt;!DOCTYPE html&gt; &lt;html xmlns:th="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt;

  3. 给第三方登录时用的数据库表-user_connection-与-auth_token-添加-redis-cache

    spring: # 设置缓存为 Redis cache: type: redis # redis redis: host: 192.168.88.88 port

  4. Java动态代理

    Jdk动态代理 通过InvocationHandler和Proxy针对实现了接口的类进行动态代理,即必须有相应的接口 应用 public class TestProxy { public

  5. Java读取classpath中的文件

    public void init() { try { //URL url = Thread.currentThread().getContextClassLo

随机推荐

  1. 基于-SLF4J-MDC-机制的日志链路追踪配置属性

    ums: # ================ 基于 SLF4J MDC 机制的日志链路追踪配置属性 ================ mdc: # 是否支持基于 SLF4J MDC

  2. ajax-跨域访问

    ajax 跨域访问 &lt;!DOCTYPE html&gt; &lt;html xmlns:th="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt;

  3. 给第三方登录时用的数据库表-user_connection-与-auth_token-添加-redis-cache

    spring: # 设置缓存为 Redis cache: type: redis # redis redis: host: 192.168.88.88 port

  4. Java动态代理

    Jdk动态代理 通过InvocationHandler和Proxy针对实现了接口的类进行动态代理,即必须有相应的接口 应用 public class TestProxy { public

  5. Java读取classpath中的文件

    public void init() { try { //URL url = Thread.currentThread().getContextClassLo