簡體   English   中英

使用Logback和Nohup在Debian上在后台運行Java應用程序

[英]Run a java application in background on Debian with logback and nohup

我有一些打包為可執行jar文件的應用程序。 現在,我向應用程序添加了帶有文件追加程序的logback日志記錄。 問題是我使用以下命令在服務器上運行這些應用程序:

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>

您需要將配置文件傳遞到登錄系統。

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

我認為執行此操作的方法之一是這樣的:

nohup setsid java -jar app.jar -Dparams=xyz </dev/null >/dev/null 2>&1 &

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM