繁体   English   中英

将 spring 作为 linux 服务启动时 Log4j2 未记录

[英]Log4j2 not logging when starting spring as linux service

我将我的 spring 应用程序配置为将日志写入文件 /logs/application.log,并将旧日志存储到具有相应日期的文件夹中,例如。 /logs/2021-05/20210503_1-application.log

############## log4j2-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout
                    pattern="%style{%d{yyyy-MM-dd'T'HH:mm:ss.SSS}} %highlight{%-5level}: %msg%n%throwable" />
        </Console>

        <RollingFile name="RollingFile"
                     fileName="./logs/application.log"
                     filePattern="./logs/$${date:yyyy-MM}/%d{yyyyMMdd}_%i-application.log">
        .....

当我使用命令java jar Application.jar启动 jar 文件时,“日志”文件夹被正确创建。 但是当我将应用程序作为服务启动时,没有创建“日志”文件夹,也没有创建任何日志文件(我已经尝试搜索系统,没有“日志”文件夹)。

我的服务配置如下所示(pi 用户应该可以访问他自己的主文件夹,同时让每个用户都可以完全访问“日志”文件夹并没有帮助:我在 linux 上运行我的 spring 应用程序作为服务。

############ application.service
[Unit]
Description=Application webserver Daemon

[Service]
ExecStart=/bin/sh "java -jar /home/pi/application.jar"
User=pi

[Install]
WantedBy=multi-user.target

将日志重定向到文件夹也没有成功(以前我使用 spring 的默认记录器,将日志重定向到文件中,启动应用程序,如ExecStart=/bin/sh "java -jar /home/pi/application.jar > application.log" ,效果很好,没有权限问题等。

在 application.service 配置中使用 WorkingDirectory:

[Service]
ExecStart=/bin/sh "java -jar /home/pi/application.jar"
WorkingDirectory=/home/pi <-- add this line
User=pi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM