spring - Spring boot 中特定包的自定义日志文件

标签 spring spring-boot logging logback

我有一个带有专门操作的 java 包。专门用于它们很少使用的意义上,我不想将它们与普通日志记录混合在一起。

我知道添加 logging.file=myapplication.log将日志记录重定向到这个文件,但有没有办法只指定从特定包到另一个文件的日志记录?赞 logging.file.my.package=special.log ?

最佳答案

Spring Boot 提供的日志配置是不可能的。但是,您可以依靠日志框架提供的配置。默认情况下,这是 Logback ,可以配置为记录到多个日志文件。

为此,您需要添加 logback.xml 文件到您的类路径并配置多个 appenders .例如:

<appender name="FILE1" class="ch.qos.logback.core.FileAppender">
    <file>log1.log</file>
    <append>true</append>
    <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

<appender name="FILE2" class="ch.qos.logback.core.FileAppender">
    <file>log2.log</file>
    <append>true</append>
    <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

现在您可以定义一个单独的记录器,以防您想记录到不同的文件。确保添加 additivity="false"否则,日志消息仍将打印在两个日志文件中:

<logger name="com.example.apps.special-package" level="INFO" additivity="false">
    <appender-ref ref="FILE2" />
</logger>
<root level="INFO">
    <appender-ref ref="FILE1" />
</root>

在这种情况下,所有日志都将写入 log1.log ( FILE1 appender),而来自包 com.example.apps.special-package 的日志将写入 log2.log ( FILE2 附加程序)。

关于spring - Spring boot 中特定包的自定义日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48983835/

相关文章:

java - 对于 `@Id` 代,Hibernate 序列乘以 50?

java - 将 swagger2-ui 与 spring-boot 一起使用时出现 404

logging - 以 "realtime"的速度重播日志文件?

c++ - 如何轻松使 std::cout 线程安全?

java - UserDetailsS​​ervice 的 loadUserByUsername 方法从未被调用

java - 启动 Spring 批处理作业

java - 在 bootstrap.properties 文件中配置 Spring Cloud Config 的机制是什么?

debugging - 如何调试 Kubernetes 负载均衡器服务未在端口上响应的原因?

java - TestNG + Spring 测试 : EntityManager return null with testng

java - 根据 application.yml 中的属性使用 Spring Boot 进行注入(inject)