我使用的是带有Lombok日志记录的Spring Boot2.3.1
-@Slf4j注释。
我有两个配置文件:dev
和default
。在适当的CCD_ 4&application-dev.yml
配置文件。
最后,使用maven构建项目,并在AWSEC-2 Windows实例中启动最终jar文件。
目前,还没有配置任何日志文件,所以jar执行看起来像:
java-jar-DmyProp=myVal。。。myJar.jar>log_file.log&
它在后台启动程序执行,所有输出都重定向到日志文件。
它并不像它应该的那样好和可配置
因此,目前,希望添加不同的日志行为:
- 开发配置文件->仅登录到控制台
- 默认->使用滚动文件附加程序记录到文件
创建以下logback-spring.xml
并将其放入资源文件夹:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOGS" value="./logs"/>
<!-- use Spring default values -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/my_log.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH-mm-ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${LOGS}/archived/my_log-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>300MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
</appender>
<springProfile name="dev">
<root level="info">
<appender-ref ref="Console"/>
</root>
<logger name="com.siemens" level="DEBUG" additivity="false">
<appender-ref ref="Console"/>
</logger>
</springProfile>
<springProfile name="!dev">
<root level="info">
<appender-ref ref="RollingFile"/>
</root>
<logger name="com.demo" level="DEBUG" additivity="false">
<appender-ref ref="RollingFile"/>
</logger>
</springProfile>
</configuration>
当我使用前面提到的Maven命令运行jar文件时,我没有任何日志记录到该文件。尽管我在后台模式下启动了它,但所有的东西都被记录到了控制台上。
我尝试使用application.yml
:的附加配置
logging:
level:
name: my_log.log
path: C:UsersuserIdeaProjectsmy-servicelogs
然而,结果是一样的。
如何为不同的配置文件创建不同的日志策略,并将其用于jar启动
玩了一段时间后找到了解决方案。
更新application.yml
:
spring:
main:
banner_mode: OFF
消除以下配置:
logging:
level:
name: my_log.log
path: C:UsersuserIdeaProjectsmy-servicelogs
Logback配置文件是正确的,应该是相同的。
现在,当你可以启动你的应用程序:
java-jar-DmyProp=myVal。。。myJar.jar;
就是这样。它将启动,所有输出将仅记录到日志文件中。
如果您将再次启用横幅->它将在控制台输出中打印并挂断。
因此必须禁用它。