[英]Run a java application in background on Debian with logback and nohup
I have some apps that are packaged as executable jar files. 我有一些打包为可执行jar文件的应用程序。 Now I added logback logging with file appender to the app. 现在,我向应用程序添加了带有文件追加程序的logback日志记录。 The problem is I run those apps on server with this command: 问题是我使用以下命令在服务器上运行这些应用程序:
nohup java -jar app.jar &
nohup.out captures all outputs and ruins the whole purpose of rotating log files and separate error and info log. nohup.out捕获所有输出,并破坏了旋转日志文件以及单独的错误和信息日志的整个目的。 I'd rather not to run my app as a service (There are lots of it) so wondering if there is a way to execute the jar in the background infinitely and have the logback logging to the files defined in logback.xml This is my logback.xml file if it helps: 我不想将我的应用程序作为服务运行(其中有很多),所以想知道是否有一种方法可以在后台无限执行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.