使用 logback 记录到两个不同的日志文件

Using logback to log to two different log files

使用下面 logback.xml :

<Configuration status="INFO">
    <Appenders>

        <appender name="log1" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>log1.log</file>
            <append>true</append>
        </appender>

        <appender name="log2" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>log2.log</file>
            <append>true</append>
        </appender>

        <logger name="logger1" level="INFO" additivity="true">
            <appender-ref ref="log1"/>
        </logger>
        <logger name="logger2" level="INFO" additivity="true">
            <appender-ref ref="log2"/>
        </logger>

    </Appenders>

    <root level="info">
        <appender-ref ref="logger1"/>
        <appender-ref ref="logger2"/>
    </root>

</Configuration>

具有依赖性:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.10</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.32</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.32</version>
</dependency>

我正在尝试使用代码将消息记录到两个不同的文件中:

Logger log1 = LoggerFactory.getLogger("logger1");
Logger log2 = LoggerFactory.getLogger("logger2");

log1.info("test1");
log2.info("test2");

但是文件 log1.log 和 log2.log 没有被创建。

这是控制台输出:

[as-akka.actor.default-dispatcher-3] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started
[main] INFO logger1 - test1
[main] INFO logger2 - test2

我不确定为什么要打印消息 [as-akka.actor.default-dispatcher-3] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started,可能是因为我在项目中使用 Akka?

我是否正确设置了 logback.xml 以启用记录到两个单独的日志文件?

我已经查看了问题 Logback to log different messages to two files 但它没有回答这个问题,因为这个问题的配置不同。

这个 result from Google 有你所有问题的答案...

我希望,您知道,当您登录文件时,<Configuration><configuration> 不是一回事,而且控制台输出在某种程度上是不相关的。 ..

这 logback.xml 将日志记录分成两个单独的文件:

<?xml version="1.0"?>
<configuration>

    <appender name="logger1appender" class="ch.qos.logback.core.FileAppender">
        <file>logfile1.log</file>
        <append>false</append>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="logger2appender" class="ch.qos.logback.core.FileAppender">
        <file>logfile2.log</file>
        <append>false</append>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>


    <property name="pattern" value="%date{HH:mm:ss.SSS} %-5p %logger{36}
%X{akkaSource} [%file:%line] - %m%n"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{HH:mm:ss.SSS} %-5p %logger{36} %X{akkaSource} [%file:%line] - %m%n</pattern>
        </encoder>
    </appender>

    <logger name="logger1name" level="INFO" additivity="false">
        <appender-ref ref="logger1appender"/>
    </logger>
    <logger name="logger2name" level="INFO" additivity="false">
        <appender-ref ref="logger2appender"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>

具有依赖关系:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.10</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.32</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.10</version>
</dependency>

使用代码:

private static final Logger log1 = LoggerFactory.getLogger("logger1name");
private static final Logger log2 = LoggerFactory.getLogger("logger2name");