如何通过jar执行登录到控制台或不同配置文件的文件



我使用的是带有Lombok日志记录的Spring Boot2.3.1-@Slf4j注释。

我有两个配置文件:devdefault。在适当的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;

就是这样。它将启动,所有输出将仅记录到日志文件中。

如果您将再次启用横幅->它将在控制台输出中打印并挂断。
因此必须禁用它。

相关内容

  • 没有找到相关文章

最新更新