Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tomcat 为什么Logback spring在具有多个服务的tc服务器上记录到错误的文件位置?_Tomcat_Logging_Spring Boot_Logback - Fatal编程技术网

Tomcat 为什么Logback spring在具有多个服务的tc服务器上记录到错误的文件位置?

Tomcat 为什么Logback spring在具有多个服务的tc服务器上记录到错误的文件位置?,tomcat,logging,spring-boot,logback,Tomcat,Logging,Spring Boot,Logback,我有5个服务在同一个tc服务器上运行,每个服务都记录到自己的目录中,如下所示:/app\u logs/service name/service name.log 他们都在使用TimeBasedRollingPolicy,该策略运行良好,只是启动时其中一个服务会随机记录到另一个服务日志文件,并在tc服务器重新启动之前一直在该文件中写入。(然后,另一个服务将执行相同的操作) 是什么导致了这一切 每个services application.yml如下所示: application.yml api:

我有5个服务在同一个tc服务器上运行,每个服务都记录到自己的目录中,如下所示:
/app\u logs/service name/service name.log

他们都在使用TimeBasedRollingPolicy,该策略运行良好,只是启动时其中一个服务会随机记录到另一个服务日志文件,并在tc服务器重新启动之前一直在该文件中写入。(然后,另一个服务将执行相同的操作)

是什么导致了这一切

每个services application.yml如下所示:

application.yml

api:
  name: Service-Name
  description: random description.
  version: v1
logging:
  file: /opt/tcserver/dc/app_logs/Service-Name/Service-Name.log
spring:
  application:
    name: Service-Name
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}" />
  <include resource="file-appender.xml" />
  <root level="INFO">
    <appender-ref ref="FILE" />
  </root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>

<!-- File appender logback configuration provided for import, equivalent to the programmatic initialization performed by 
  Boot -->

<included>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
      <pattern>${FILE_LOG_PATTERN}</pattern>
    </encoder>
    <file>${LOG_FILE}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_FILE}.%d.%i.gz</fileNamePattern>
      <maxHistory>14</maxHistory>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
  </appender>
</included>
每个服务在库中共享这两个文件

logbackspring.xml

api:
  name: Service-Name
  description: random description.
  version: v1
logging:
  file: /opt/tcserver/dc/app_logs/Service-Name/Service-Name.log
spring:
  application:
    name: Service-Name
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}" />
  <include resource="file-appender.xml" />
  <root level="INFO">
    <appender-ref ref="FILE" />
  </root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>

<!-- File appender logback configuration provided for import, equivalent to the programmatic initialization performed by 
  Boot -->

<included>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
      <pattern>${FILE_LOG_PATTERN}</pattern>
    </encoder>
    <file>${LOG_FILE}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_FILE}.%d.%i.gz</fileNamePattern>
      <maxHistory>14</maxHistory>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
  </appender>
</included>

文件appender.xml

api:
  name: Service-Name
  description: random description.
  version: v1
logging:
  file: /opt/tcserver/dc/app_logs/Service-Name/Service-Name.log
spring:
  application:
    name: Service-Name
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}" />
  <include resource="file-appender.xml" />
  <root level="INFO">
    <appender-ref ref="FILE" />
  </root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>

<!-- File appender logback configuration provided for import, equivalent to the programmatic initialization performed by 
  Boot -->

<included>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
      <pattern>${FILE_LOG_PATTERN}</pattern>
    </encoder>
    <file>${LOG_FILE}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_FILE}.%d.%i.gz</fileNamePattern>
      <maxHistory>14</maxHistory>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
  </appender>
</included>

${FILE\u LOG\u PATTERN}
${LOG_文件}
${LOG\u FILE}.%d.%i.gz
14
100MB
编辑 我能够找出问题的原因,但我仍然不知道原因,也不知道这是否是一个常见问题

事实证明,为了让我们的服务更快地启动,我们在tomcat server.xml文件中有:
startStopThreads=0
。这将同时启动我们的多个服务。这与我们的logback spring冲突


有人知道为什么会这样吗?这在后来的Spring Boot迭代中已经修复了吗?(使用1.3.6.版本)

适用于遇到这种情况的任何人。在我们的例子中,我们可以解决在spring引导应用程序中配置log4j2的问题,这可能是一个特定于logback的问题