簡體   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