Spring boot 存在Docker问题的JSON格式日志的Logback配置

Spring boot 存在Docker问题的JSON格式日志的Logback配置,spring-boot,docker,logstash,logback,Spring Boot,Docker,Logstash,Logback,我有一个带有Logback配置的Spring引导应用程序,以便以JSON格式(控制台和文件appender)创建日志。 当我在本地运行我的应用程序(Sprint工具套件)时,我可以正确地看到JSON日志,但是当我为我的应用程序创建一个Docker容器并尝试运行它时,控制台日志是“标准”格式,而不是JSON格式 我需要JSON格式,以便在ELK堆栈中读取这些日志 <?xml version="1.0" encoding="UTF-8"?> <

我有一个带有Logback配置的Spring引导应用程序,以便以JSON格式(控制台和文件appender)创建日志。 当我在本地运行我的应用程序(Sprint工具套件)时,我可以正确地看到JSON日志,但是当我为我的应用程序创建一个Docker容器并尝试运行它时,控制台日志是“标准”格式,而不是JSON格式

我需要JSON格式,以便在ELK堆栈中读取这些日志

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property resource="application.properties" />
 
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %cyan(%d{ISO8601}) %magenta(%-5level) [%green(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>      
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"customer":"${log.config.customer}", "app":"${log.config.appname}", "environment":"${log.config.env}"}</customFields>
        </encoder> 
    </appender>
    
    <appender name="File" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>${log.config.appender.file.level}</level>
        </filter>    
        <file>${log.config.appender.file.path}</file>           
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"customer":"${log.config.customer}", "app":"${log.config.appname}", "environment":"${log.config.env}"}</customFields>
        </encoder>              
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.config.appender.file.path}.%d{yyyy-MM-dd}</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>               
    </appender>
         
    <root level="info">
        <appender-ref ref="Console" />
        <appender-ref ref="File" />
    </root>
 
</configuration>

%青色(%d{ISO8601})%洋红(%-5级)[%绿色(%t)]%黄色(%C{1}):%msg%n%可丢弃
{“客户”:“${log.config.customer}”,“应用”:“${log.config.appname}”,“环境”:“${log.config.env}”
${log.config.appender.file.level}
${log.config.appender.file.path}
{“客户”:“${log.config.customer}”,“应用”:“${log.config.appname}”,“环境”:“${log.config.env}”
${log.config.appender.file.path}。%d{yyyy-MM-dd}
30
编辑:我注意到,如果我使用Maven目标文件夹中的
java-jar app.jar
运行我的应用程序,那么日志不是JSON格式的

我做错了什么? 谢谢

已解决:问题很简单,我的日志文件名为“
Logback spring.xml
”(L大写),在这种情况下,STS正确显示日志,但在您使用“
java-jar app.jar
”运行应用程序时却无法显示日志,因此我将该文件重命名为
Logback spring.xml
(L小写)一切正常