java - 使用 logback 和 nohup 在 Debian 后台运行 java 应用程序

标签 java linux logging logback slf4j

我有一些打包为可执行 jar 文件的应用程序。现在,我将带有文件附加程序的日志记录添加到应用程序中。问题是我使用以下命令在服务器上运行这些应用程序:

nohup java -jar app.jar &

nohup.out 捕获所有输出并破坏轮换日志文件和分离错误和信息日志的全部目的。 我不想将我的应用程序作为服务运行(有很多)所以想知道是否有一种方法可以在后台无限地执行 jar 并将 logback 记录到 logback.xml 中定义的文件 如果有帮助,这是我的 logback.xml 文件:

<configuration debug="true">

    <appender name="FILE-ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>/home/user/logs/kafka/orders/kafka-consumer.info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <totalSizeCap>3GB</totalSizeCap>
            <maxHistory>200</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>%d %p %c{1.} %m%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE-ROLLING-ERROR" 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>

        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>/home/user/logs/kafka/orders/kafka-consumer.error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <totalSizeCap>3GB</totalSizeCap>
            <maxHistory>200</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>%d %p %c{1.} %m%n%ex{100}</pattern>
        </encoder>
    </appender>

    <logger name="kafkaLogger" level="info" additivity="false">
        <appender-ref ref="FILE-ROLLING"/>
    </logger>
    <logger name="kafkaLoggerError" level="error" additivity="false">
        <appender-ref ref="FILE-ROLLING-ERROR"/>
    </logger>

    <root level="info">
        <appender-ref ref="FILE-ROLLING"/>
        <appender-ref ref="FILE-ROLLING-ERROR"/>
    </root>

</configuration>

最佳答案

您需要将配置文件传递给logback系统。

 nohup java -jar app.jar -DLogback.configurationFile=/path/to/Logback.xml &

关于java - 使用 logback 和 nohup 在 Debian 后台运行 java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57833486/

相关文章:

java - 在 Java 中比较文件名的一部分和字符串

java - 从 Java 8 中不以逗号结尾的字符串中删除最后一个逗号

tomcat - 从自定义 Tomcat 领域登录

Python 日志记录 : Change "WARN" to "INFO"

java - 在构造函数中设置静态最终变量

java - Android getDatabase调用递归报错

regex - awk 检查列中的空格

linux - 具有 '--user' 的 Docker 无法写入具有不同所有权的卷

使用字符串作为模板类型时 Linux 中的 C++ 核心转储

python - 是否有一个模块可以记录内存中的错误?