gpt4 book ai didi

java - Logback 覆盖依赖项 logback.xml

转载 作者:行者123 更新时间:2023-12-01 19:18:21 28 4
gpt4 key购买 nike

我正在开发一个应用程序,使用我的另一个项目作为 Maven 依赖项。

期望

我希望我的依赖项使用自己的 logback.xml 来登录自己的文件。我希望应用程序使用自己的 logback.xml 文件登录控制台,并使用一个独立的文件而不是依赖项。我希望这两个文件都位于应用程序 jar 附近的日志文件夹中。

现在做什么

但目前应用程序和依赖项都使用应用程序的 logback.xml,并且所有内容都记录在控制台和同一个文件中。

如何解决这个问题?

有关项目的详细信息

两者都使用 logback 作为记录器。依赖项是一种协议(protocol)实现,它将通信信息记录在一个文件中,该文件必须位于与应用程序日志不同的文件中。应用程序和依赖项都具有经典的 Maven 结构,其中 logback.xml 文件位于资源文件夹内。

依赖logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{HH:mm:ss}|%msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>./log/communications.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>

<root level="DEBUG">
<appender-ref ref="FILE"/>
</root>

</configuration>

应用程序 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<appender name="FILEAPPLI" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{HH:mm:ss}|%msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>./log/debugfileappli.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>

<root level="DEBUG">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILEAPPLI"/>
</root>

</configuration>

最佳答案

我找到了解决方案。在我的依赖项代码中,我调用特定的记录器名称。

private static final Logger logger = LoggerFactory.getLogger("dependencyLogger");

我在我的应用程序 logback.xml 中声明了这个记录器

<logger name="dependencyLogger" level="debug">
<additivity="false">
<appender-ref ref="FILE-AUDIT" />
<appender-ref ref="STDOUT" />
</logger>

通过这种方式,我可以处理我想要的来自单个 logback.xml 依赖项的所有日志

关于java - Logback 覆盖依赖项 logback.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44364898/

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