阅读量:1
Ubuntu Java 日志记录实操指南
一 整体思路与分层
- 应用内使用成熟的日志框架进行输出、格式化和滚动:推荐 SLF4J + Logback(性能与功能均衡)或 Log4j 2(异步与插件丰富)。输出同时覆盖 控制台 与 滚动文件,便于本地排查与长期留存。
- 系统层用 logrotate 做文件轮转、压缩与清理,避免磁盘被占满。
- 运行在 systemd 的服务,用 journalctl 统一查看与检索服务日志。
- 需要集中化时,搭建 ELK(Elasticsearch + Logstash + Kibana) 或 Graylog 做检索与可视化。
- 日志级别建议:开发环境用 DEBUG,生产环境用 INFO/WARN/ERROR;尽量输出结构化(如 JSON)或统一 Pattern,便于后续采集与检索。
二 应用内日志框架配置
- 选择组合:优先 SLF4J + Logback;或选择 Log4j 2;仅简单场景可用 JUL(java.util.logging)。
- 输出目标:同时配置 Console 与 RollingFile,滚动策略按 时间/大小 触发,设置保留天数与压缩。
- 最小可用示例(resources 目录下放置配置文件,应用启动自动加载):
- Logback(resources/logback.xml)
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n logs/app.log logs/app.%d{yyyy-MM-dd}.%i.log 30 100MB %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - Log4j 2(resources/log4j2.xml)
- JUL(使用默认 logging.properties 并通过启动参数指定)
启动命令示例:java -Djava.util.logging.config.file=logging.properties -jar myapp.jar。handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler java.util.logging.FileHandler.pattern=/var/log/myapp/java.log java.util.logging.FileHandler.limit=10485760 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=INFO
- Logback(resources/logback.xml)
三 系统层日志轮转与清理
- 使用 logrotate 管理应用日志文件(适合与框架内置滚动配合或作为兜底策略)。
- 创建配置:sudo nano /etc/logrotate.d/myapp
/var/log/myapp/*.log { daily rotate 7 compress missingok notifempty create 640 root adm sharedscripts postrotate systemctl restart myapp.service # 可选:确保应用重新打开新日志文件 endscript } - 测试与生效:sudo logrotate -f /etc/logrotate.d/myapp(强制立即轮转)。
四 使用 Systemd 运行与 Journal 查看
- 若以 systemd 管理服务(如 myapp.service),可用 journalctl 高效检索:
- 查看服务日志:journalctl -u myapp.service
- 实时跟踪:journalctl -u myapp.service -f
- 按时间范围:journalctl -u myapp.service --since “2025-10-20” --until “2025-10-22”
- 导出到文件:journalctl -u myapp.service > /var/log/myapp/journal.log
- 调整系统级日志保留(/etc/systemd/journald.conf):
- SystemMaxUse=500M;SystemKeepFree=100M;SystemMaxFileSize=50M;SystemMaxFiles=5
- 生效:sudo systemctl restart systemd-journald
五 常用查看命令与集中化方案
- 常用命令(快速排查):
- 实时查看:tail -f /var/log/myapp/app.log
- 关键字搜索:grep “ERROR” /var/log/myapp/app.log;grep -i “exception” /var/log/myapp/app.log
- 分页查看:less /var/log/myapp/app.log
- 头尾若干行:head -n 50;tail -n 50
- 集中化日志(可选):搭建 ELK 或 Graylog,将应用日志采集、存储、检索与可视化,适合多节点或需要深度分析的场景。
以上就是关于“Ubuntu Java日志记录怎么做”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm