📜  log4j-日志格式设置(1)

📅  最后修改于: 2023-12-03 15:32:45.136000             🧑  作者: Mango

Log4j 日志格式设置

Log4j 是使用广泛的 Java 日志框架之一,它提供了丰富的日志级别、输出方式和灵活的配置方式。其中,日志输出格式是非常重要的一部分,它能够决定日志的可读性和便捷性。本文将介绍 Log4j 日志格式设置的相关知识。

日志格式

日志格式指的是输出的日志信息的格式,它决定了输出的信息包含哪些内容、以什么样的形式呈现。Log4j 默认的日志格式为:

%d [%t] %-5p %c - %m%n

其中,符号的含义如下:

  • %d:输出日志的时间
  • [%t]:输出线程名
  • %-5p:输出日志级别,-5 表示左对齐并且占5个字符的位置
  • %c:输出日志所在的类名
  • -%m%n:输出日志的信息及换行符

根据需求,我们可以自定义日志格式,Log4j 支持多种自定义方式,常用的有如下几种。

自定义日志格式字符串

通过在配置文件中设置 layout 参数可以定义自定义的日志格式,在参数值中使用以下转义字符可以当前日期、时间、级别、线程、类名和日志信息等。

  • %d:输出日志的时间
  • %t:输出线程名
  • %p:输出日志级别
  • %c:输出日志所在的类名
  • %m:输出日志的信息
  • %n:输出换行符

示例:

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <!-- 自定义日志格式 -->
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c:%L - %m%n" />
    </layout>
</appender>
自定义布局对象

除了使用自定义日志格式字符串外,我们还可以自己实现布局对象来完成日志的输出。需要继承 org.apache.log4j.Layout 类。自定义布局对象的主要步骤如下:

  1. 继承 org.apache.log4j.Layout 类。
  2. 实现 format(logEvent) 方法,将 LogEvent 转换为字符串。
  3. 将自定义布局对象配置到 Appender 中。

示例:

public class CustomLayout extends Layout {
    @Override
    public String format(LoggingEvent loggingEvent) {
        StringBuilder sb = new StringBuilder();
        sb.append(loggingEvent.getTimeStamp()).append(" ");
        sb.append(loggingEvent.getThreadName()).append(" ");
        sb.append(loggingEvent.getLevel().toString()).append(" ");
        sb.append(loggingEvent.getLoggerName()).append(" - ");
        sb.append(loggingEvent.getMessage().toString());
        sb.append(Layout.LINE_SEP);
        return sb.toString();
    }

    @Override
    public boolean ignoresThrowable() {
        return true;
    }

    @Override
    public void activateOptions() {
        // do nothing
    }
}
<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <!-- 自定义布局对象 -->
    <layout class="com.example.CustomLayout" />
</appender>
结束语

Log4j 日志格式设置是非常灵活的,可以满足大多数需求。只需要按照自己的需求进行设置,即可完成自定义的日志输出格式。