我有一个包含专门操作的java包。专业的意义是他们很少使用,我不想让他们与正常的伐木混合。
我知道添加logging.file=myapplication.log
会将日志记录重定向到此文件,但有没有办法只指定从特定包到另一个文件的日志记录?喜欢logging.file.my.package=special.log
?
答案 0 :(得分:2)
Spring Boot提供的日志配置是不可能的。但是,您可以依赖日志记录框架提供的配置。默认情况下,这是Logback,可配置为记录到多个日志记录文件。
为此,您需要将 logback.xml 文件添加到类路径并配置多个appenders。例如:
<DomainCheckResult>
现在您可以定义一个单独的记录器,以防您想要记录到另一个文件。确保添加<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
appender),而来自包FILE1
的日志将写入com.example.apps.special-package
({{1 } appender)。
答案 1 :(得分:2)
Spring使用Logback作为默认记录器。根据{{3}},您可以自行设置 logback.xml ,以添加到默认的日志记录机制中,您可以使用特殊的&#39;行为:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<property name="SPECIAL_FILE_NAME" value="special"/>
<appender name="SPECIAL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%-10.10thread] %-5level %30.30logger{29}:%-4line %msg%n</pattern>
<charset>utf8</charset>
</encoder>
<file>log/${SPECIAL_FILE_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${SPECIAL_FILE_NAME}-%i.log</fileNamePattern>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<logger name="logging.file.my.package" level="debug" additivity="false">
<appender-ref ref="SPECIAL_FILE"/>
</logger>
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
这里我们使用Spring默认FILE
和CONSOLE
appender来照常记录应用信息(logging.file.my.package
除外),并使用SPECIAL_FILE
appender将此包中的信息记录到档案log/special.log
。