Java 如何使用jar执行登录到控制台或不同配置文件的文件?

Java 如何使用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& 它在后台启动程序执行

我将Spring Boot
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&

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

如果再次启用横幅->它将在控制台输出中打印并挂起。
所以它必须被禁用