gpt4 book ai didi

java - 在我的外部库 Jar 中使用 Logback.xml 的正确方法是什么

转载 作者:行者123 更新时间:2023-12-01 10:51:14 26 4
gpt4 key购买 nike

我通常使用以下 Logback.xml 和 application.properties 包来获取我需要的所有内容。 Logback.xml:

<configuration>

<!-- External properties -->
<property file="./application.properties" /> <!-- for build -->

<timestamp key="byDate" datePattern="yyyyMMdd"/>

<!-- Send messages to System.out - CONSOLE -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
</encoder>
<withJansi>true</withJansi>
</appender>

<!-- Send messages to a rolling file -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

<file>${logging.path}/${spring.application.name}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover. Make sure the path matches the one in the file element or else the rollover logs are placed in the working directory. -->
<fileNamePattern>${logging.path}/${spring.application.name}_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
</encoder>

</appender>

<root level="${logging.level}">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>

</configuration>

应用程序属性:

spring.application.name=MyApp

#Logging Settings
logging.level=INFO
logging.path=/data/MyApp/logs/
logging.config=/data/MyApp/Logback.xml

但现在我正在尝试编写一个外部 Jar,我将其包含在我的“其他项目”中。但我的“其他项目”已经有 Logback.xml 和 application.properties,我希望外部 Jar 也能使用它。我尝试在外部 Jar 项目中不放置任何 Logback.xml 和 application.properties,并且我认为它会找到 Logback.xml。但它不起作用。

当我从外部 Jar 调用某些内容时,我没有看到任何日志消息。这种情况我该怎么办?顺便说一句,我使用 Maven 进行构建和依赖关系。因此,我构建了外部 Jar 并将其包含在我的项目中:

<dependency>
<groupId>com.myapp.someprovider</groupId>
<artifactId>SomeAppProvider</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>/Users/me/Projects/Java/Server/SomeAppProvider/target/SomeAppProvider-1.0.0.jar</systemPath>
</dependency>

最佳答案

日志配置和属性文件应该位于您构建的最终二进制文件的主资源文件夹中(例如,如果您使用的是 Maven,则为 src/main/resources)(例如 .war 项目,如果您正在构建一个 Web 应用程序)。这个中央日志配置文件需要包含完整应用程序的完整日志配置,包括您依赖的任何 jar。

如果您的模块中需要单独的日志记录配置文件(例如用于测试目的),则应将这些文件放置在测试资源文件夹中(例如 maven 的 src/test/resources )。

作为旁注,您通常应该尝试避免在 Maven 依赖项中使用 systemPath。像您在示例中所做的那样对系统路径进行硬编码会带来麻烦,尤其是在涉及更多人员的项目中。

关于java - 在我的外部库 Jar 中使用 Logback.xml 的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33886902/

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