代码之家  ›  专栏  ›  技术社区  ›  Zag Gol

每个流程实例的唯一日志文件

  •  0
  • Zag Gol  · 技术社区  · 6 年前

    我有一个服务器,是我围绕intellij用Java开发的。我创建了许多不同的配置(node1、node2等),每个配置代表另一个服务器和另一个端口,然后通过spring boot将它们一起运行。

    以下是错误打印文件的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>
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   mikeb    6 年前

    你可以这样做:

    <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 ...