ubuntu

Ubuntu Java日志存储位置怎么选

小樊
45
2025-12-05 23:58:25
栏目: 云计算

Ubuntu Java日志存储位置选择指南

一、选择原则

二、推荐目录与适用场景

场景 推荐路径 权限与归属 说明
系统服务(systemd) /var/log/应用名/ 目录 0755 appuser:appgroup;日志文件 0640 appuser:appgroup 与系统日志集中管理,配合 logrotate 轮转
普通用户应用 ~/logs//opt/应用名/logs/ 目录 0755 用户:用户 简单可控,便于备份与迁移
容器化/短期任务 /var/log/应用名/ 或挂载卷 /logs 依据容器用户与卷权限设置 便于宿主机统一收集与归档

三、在主流日志框架中设置路径

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/var/log/myapp/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>/var/log/myapp/app.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="info">
    <appender-ref ref="FILE"/>
  </root>
</configuration>
<Configuration status="WARN">
  <Appenders>
    <File name="File" fileName="/var/log/myapp/app.log">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
    </File>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="File"/>
    </Root>
  </Loggers>
</Configuration>
handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.FileHandler.pattern=/var/log/myapp/app.log
java.util.logging.FileHandler.limit=50000000
java.util.logging.FileHandler.count=5
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.level=ALL
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
.level=ALL
java -Djava.util.logging.config.file=/opt/myapp/conf/logging.properties -jar myapp.jar

以上示例展示了在 Logback/Log4j2/JUL 中如何将日志输出到指定目录,并配合按时间滚动与保留策略使用。

四、系统级落地与运维要点

sudo mkdir -p /var/log/myapp
sudo chown appuser:appgroup /var/log/myapp
sudo chmod 0755 /var/log/myapp
/var/log/myapp/*.log {
  daily
  rotate 7
  compress
  delaycompress
  missingok
  notifempty
  create 0640 appuser appgroup
  sharedscripts
  postrotate
    systemctl reload myapp.service >/dev/null 2>&1 || true
  endscript
}

0
看了该问题的人还看了