gpt4 book ai didi

java - 使用 Log4J 1.*,如何将两个包写入两个单独的文件?

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:13 25 4
gpt4 key购买 nike

我有以下两个包:

com.mycorp.project.first
com.mycorp.project.second

我想配置 Log4J (SLF4J) 将日志从一个包写入一个文件,并将日志从另一个包写入第二个文件。我不想让他们混在一起。

需要说明的是,这是一个项目/一个进程在运行。

我试过过滤和记录器,但它们似乎被 log4j 忽略了。两个文件始终相同。

编辑:感谢您到目前为止的回答,这就是我所得到的,但它不起作用。两个输出文件是相同的。

<configuration debug="true">
<contextName>dev</contextName>

<appender name="FIRST_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>A:/dev/LogTesting/logs/first.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>A:/dev/LogTesting/logs/first.%d{yyyyMMdd}%d{_HHmmss,aux}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{MMM dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<appender name="SECOND_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>A:/dev/LogTesting/logs/second.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>A:/dev/LogTesting/logs/second.%d{yyyyMMdd}%d{_HHmmss,aux}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<Pattern>%d{MMM dd HH:mm:ss.SSS} %property{HOSTNAME} [%thread] %level %logger{36} %msg%n</Pattern>
</encoder>
</appender>

<!-- =============================================================== -->
<logger name="com.test.apples" additivity="false">
<level value="DEBUG" />
<appender-ref ref="FIRST_FILE" />
</logger>

<logger name="com.test.oranges" additivity="false">
<level value="DEBUG" />
<appender-ref ref="SECOND_FILE" />
</logger>
<!-- =============================================================== -->

<category name="com.test.apples" additivity="false">
<priority value="DEBUG"/>
<appender-ref ref="FIRST_FILE"/>
</category>

<category name="com.test.oranges" additivity="false">
<priority value="DEBUG"/>
<appender-ref ref="SECOND_FILE"/>
</category>

<!-- =============================================================== -->

<!-- default -->
<root level="WARN">
<appender-ref ref="FIRST_FILE" />
<appender-ref ref="SECOND_FILE" />
</root>

最佳答案

试试这个是属性文件的例子:

log4j.rootLogger=DEBUG, CONSOLE
# Each package has different appender name
log4j.logger.com.mycorp.project.first=DEBUG, FIRST
log4j.logger.com.mycorp.project.second=DEBUG, SECOND

log4j.appender.FIRST=org.apache.log4j.RollingFileAppender
log4j.appender.FIRST.File=./first.log
log4j.appender.FIRST.layout=org.apache.log4j.PatternLayout

log4j.appender.SECOND=org.apache.log4j.RollingFileAppender
log4j.appender.SECOND.File=./second.log
log4j.appender.SECOND.layout=org.apache.log4j.PatternLayout

或者这个用于 XML(只突出重要部分):

<!-- FIRST appender definition -->
<appender name="FIRST" class="org.apache.log4j.FileAppender">
...
</appender>

<!-- SECOND appender definition -->
<appender name="SECOND" class="org.apache.log4j.FileAppender">
...
</appender>

<!-- logger package com.mycorp.project.first -->
<logger name="com.mycorp.project.first">
<level value="DEBUG" />
<appender-ref ref="FIRST"/>
</logger>

<!-- logger for package com.mycorp.project.second -->
<logger name="com.mycorp.project.second">
<level value="DEBUG" />
<appender-ref ref="SECOND"/>
</logger>

关于java - 使用 Log4J 1.*,如何将两个包写入两个单独的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16564159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com