我有一台我用Java围绕intellij开发的服务器。我创建了许多不同的配置(node1,node2等),每个配置代表另一个服务器和另一个端口,然后通过Spring Boot一起运行它们。
问题是所有服务器的日志都写入同一slf4j日志文件,并且根据我的团队负责人的要求,我需要每台服务器将日志写入单独的文件。
这是错误打印文件的logback.xml文件中的定义:
<property name="LOGS_PATH" value="./logs" />
<appender name="ERROR_LOG_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>${LOGS_PATH}/fullNode_error.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<charset>UTF-8</charset>
<Pattern>
%d{dd/MM/yyyy HH:mm:ss.SSS} [%thread][%-5level][%logger{0}] %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOGS_PATH}/archived/fullNode_error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
我在做什么错了?
答案 0 :(得分:1)
您可以这样做:
<file>${LOGS_PATH}/node-${env.NODE_NAME}_error.log</file>
这将从环境中获取NODE_NAME变量,并在文件名中使用它。
在启动应用实例并退出后设置NODE_NAME
。
您还可以使用:
<file>${LOGS_PATH}/node-${NODE_NAME}_error.log</file>
,当您运行应用程序时,请在启动时执行java -DNODE_NAME=node1 ...
。