我通常使用下面的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>
application.properties:
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调用某些东西时,我没有看到任何日志消息。你能帮助我吗,在这种情况下该怎么办?顺便说一句,如果它是importanl我使用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>
提前致谢!
答案 0 :(得分:1)
记录配置和属性文件应该位于您构建的最终二进制的主资源文件夹(例如,如果您正在使用maven的src / main / resources)中(例如.war项目,如果你正在构建一个Web应用程序)。此中央日志配置文件需要包含完整应用程序的完整日志配置,包括您依赖的任何jar。
如果模块中需要单独的日志配置文件(例如用于测试目的),则应将这些文件放在测试资源文件夹中(例如,maven的src / test / resources)。
作为旁注,您通常应该尽量避免在maven依赖项中使用systemPath。像你在你的例子中那样对系统路径进行硬编码就是在乞求麻烦,特别是在涉及更多人的项目中。