Java 如何使用jar执行登录到控制台或不同配置文件的文件?
我将Spring BootJava 如何使用jar执行登录到控制台或不同配置文件的文件?,java,spring-boot,maven,logging,logstash,Java,Spring Boot,Maven,Logging,Logstash,我将Spring Boot2.3.1与Lombok logging-annotation一起使用 我有两个配置文件:dev和default。使用适当的application.yml和application-dev.yml配置文件 最后,使用maven构建项目,并在AWS EC-2 Windows实例中启动最终的jar文件 目前,没有配置任何日志文件,因此jar执行看起来像: java-jar-DmyProp=myVal。。。myJar.jar>log\u file.log& 它在后台启动程序执行
2.3.1
与Lombok logging-annotation一起使用
我有两个配置文件:dev
和default
。使用适当的application.yml
和application-dev.yml
配置文件
最后,使用maven构建项目,并在AWS EC-2 Windows实例中启动最终的jar文件
目前,没有配置任何日志文件,因此jar执行看起来像:
java-jar-DmyProp=myVal。。。myJar.jar>log\u 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>
然而,结果是一样的
如何为不同的配置文件创建不同的日志策略,并将其与jar启动一起使用?经过一段时间的尝试,找到了一个解决方案 更新
application.yml
:
logging:
level:
name: my_log.log
path: C:\Users\user\IdeaProjects\my-service\logs
spring:
main:
banner_mode: OFF
消除如下配置:
logging:
level:
name: my_log.log
path: C:\Users\user\IdeaProjects\my-service\logs
Logback配置文件正确且应相同
现在你可以启动你的应用程序了:
java-jar-DmyProp=myVal。。。myJar.jar&
就这样。它将启动,所有输出将仅记录到日志文件中
如果再次启用横幅->它将在控制台输出中打印并挂起。所以它必须被禁用