【问题标题】:Spring Boot Linux service Log FileSpring Boot Linux 服务日志文件
【发布时间】:2021-01-02 13:44:51
【问题描述】:

我有一个 spring boot uber/fat jar,它设置为 linux 服务并使用以下命令启动

systemctl start servicename

spring boot jar 有如下日志文件配置

 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <property name="LOG_FILE" value="logs/spring.log"/>

    <include resource="org/springframework/boot/logging/logback/file-appender.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <property name="SPECIAL_FILE_NAME" value="special"/>
    <appender name="SPECIAL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%-10.10thread] %-5level %30.30logger{29}:%-4line %msg%n</pattern>
            <charset>utf8</charset>
        </encoder>
        <file>logs/controller.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>logs/controller-%i.log</fileNamePattern>
        </rollingPolicy>
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <logger name="com.org.app.controller" level="debug" additivity="false">
        <appender-ref ref="SPECIAL_FILE"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="FILE"/>
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

我的服务是这样配置的

[Unit]
Description=myapp

[Service]
User=appuser
WorkingDirectory=/home/appuser 
ExecStart=/usr/bin/java -Xmx256m -jar -Dspring.profiles.active=test /home/appuser/myapp.jar 
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

但是,服务启动时不会生成日志。有什么想法吗??

如果我在 shell 中使用该命令,则会生成日志

/usr/bin/java -Xmx256m -jar -Dspring.profiles.active=test /home/appuser/myapp.jar 

我什至尝试在服务文件下方添加以下内容,但没有成功。

StandardOutput=/home/appuser/logs/log.log
StandardError=/home/appuser/logs/error.log

【问题讨论】:

    标签: java linux spring-boot jar


    【解决方案1】:

    任何来这里寻找答案的人都需要这样做

    创建一个脚本文件(myapp.sh)并把内容放到那里启动文件

    java -Xmx256m -jar -Dspring.profiles.active=test /home/appuser/myapp.jar 
    

    接下来在您的服务文件中删除 java 命令并像这样放置此文件引用

    [Unit]
    Description=myapp
    
    [Service]
    User=appuser
    WorkingDirectory=/home/appuser 
    ExecStart=/home/appuser/myapp.sh
    SuccessExitStatus=143
    TimeoutStopSec=10
    Restart=on-failure
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    

    接下来确保脚本文件具有类似这样的执行权限

    chmod +x /home/appuser/myapp.sh
    

    就是这样,现在启动您的应用程序,您应该会看到日志,因为我的服务日志是在以下位置创建的

    /home/appuser/logs
    

    【讨论】:

      猜你喜欢
      • 2017-06-19
      • 1970-01-01
      • 2017-03-25
      • 2018-07-18
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多