log4j2のカスタムログファイル名の作り方は何ですか?

Log4j2のログファイル名をカスタマイズするには、設定ファイルまたはコードを使用して実現することができます。

  1. – ローリングランダムアクセスファイル
  2. <ローリングファイル>
<RollingRandomAccessFile name="FileLogger" fileName="logs/mylog.log" filePattern="logs/mylog-%d{MM-dd-yyyy}.log.gz">
    <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    <Policies>
        <TimeBasedTriggeringPolicy />
    </Policies>
</RollingRandomAccessFile>

上記の設定では、fileNameはログファイルの初期名を指定し、filePatternはログファイルのローテーション命名規則を指定します。%dは日付形式を表し、%tはスレッド名を表します。

  1. ローリングランダムアクセスファイルアペンダー
  2. ローリングファイルアペンダー
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.config.builder.api.*;
import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Log4j2CustomFileNameExample {

    public static void main(String[] args) {
        // 使用代码方式配置Log4j2
        Configuration configuration = createLogConfiguration();
        Configurator.initialize(configuration);

        // 获取Logger
        Logger logger = LogManager.getLogger(Log4j2CustomFileNameExample.class);
        logger.info("This is a custom log message");
    }

    private static Configuration createLogConfiguration() {
        ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();

        // 创建Appender
        AppenderComponentBuilder appenderBuilder = builder.newAppender("FileLogger", "RollingRandomAccessFile")
                .addAttribute("fileName", "logs/mylog.log")
                .addAttribute("filePattern", "logs/mylog-%d{MM-dd-yyyy}.log.gz");

        // 创建Layout
        LayoutComponentBuilder layoutBuilder = builder.newLayout("PatternLayout")
                .addAttribute("pattern", "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n");

        // 添加Appender和Layout到Root Logger
        builder.add(appenderBuilder)
                .add(builder.newRootLogger(Level.INFO).add(builder.newAppenderRef("FileLogger").addAttribute("level", Level.INFO)))
                .add(layoutBuilder);

        return builder.build();
    }
}

上記のコードでは、fileNameはログファイルの初期名称を指定し、filePatternは回転ログファイルの命名規則を指定します。 %dは日付形式、%tはスレッド名を表します。

bannerAds