Ubuntu系统中Java日志管理方法
作者:小月亮
时间:2026-07-04
浏览:0
Ubuntu系统Java日志管理含框架选型(Log4j、Logback、SLF4J)、配置存储、命令(tail、grep)、轮转工具Logrotate及集中方案ELKStack,合理配置以高效管理分析。
Ubuntu系统中Ja va日志管理,这事儿说难不难,但真要上手,从框架选型到轮转配置再到集中化方案,每一步都有不少坑。今天就把这些经验系统地捋一遍,从基础到进阶,一次性讲清楚。

一、常见Ja va日志框架及配置
选择日志框架是第一步。目前市面上主流的就那么几个:Log4j功能灵活但已不是最新,SLF4J只是个门面,得搭配Logback或Log4j等实现;Logback算是Log4j的继任者,性能和功能都更胜一筹;如果只是简单场景,ja va.util.logging(JDK自带的)也能凑合用。配置文件是核心,通常放在项目的src/main/resources目录下,或者系统级路径比如/etc/。
- Log4j:通过
log4j.properties或log4j.xml配置。可以指定输出路径(如logs/app.log)、输出格式(如%d{ISO8601} [%t] %-5p %c - %m%n)、滚动策略(如MaxFileSize=10MB,MaxBackupIndex=5)。 - Logback:配置文件名是
logback.xml,支持异步日志这类高级功能。一个典型的配置示例如下:
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
logs/app.log
logs/app.%d{yyyy-MM-dd}.log
30
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
- SLF4J:不需要单独的配置文件,日志行为完全由底层的实现(如Logback)决定。代码里通过
LoggerFactory.getLogger(Class)获取日志记录器就行。
二、日志文件存储位置
日志文件放哪儿,完全由框架配置说了算。常见的几个路径:
- 项目自定义目录:比如
/path/to/project/logs/app.log,直接在框架配置文件里指定。 - 系统默认日志目录:例如
/var/log/ja va/(系统级Ja va应用日志),或者/var/log/tomcatX/(Tomcat下的Ja va应用日志,X是版本号)。 - 应用程序工作目录:通过
System.getProperty("user.dir")获取当前目录,日志通常放在该目录下的logs子目录里。
三、日志查看与搜索命令
Ubuntu下查看和管理日志的命令行工具相当丰富:
- 实时查看:
tail -f /path/to/logfile.log,实时输出最新内容,适合监控。 - 搜索特定内容:
grep "ERROR" /path/to/logfile.log,筛选包含“ERROR”的行,支持正则。 - 分页查看:
less /path/to/logfile.log,逐页查看大文件,支持上下翻页和/keyword搜索。 - 查看系统日志:
journalctl -u serviceName,查看指定服务(如tomcat)的日志,前提是系统使用systemd。
四、日志轮转配置(防止日志过大)
日志文件如果不加控制,很快就会撑爆磁盘。好在Ubuntu默认安装了Logrotate这个轮转工具,可以自动压缩和删除旧日志。
- 安装Logrotate:如果没装,执行
sudo apt update && sudo apt install logrotate。 - 创建配置文件:在
/etc/logrotate.d/下新建一个应用专属文件,比如my-ja va-app。示例如下:
/var/log/myapp/*.log {
daily # 每天轮转一次
rotate 7 # 保留最近7份日志
compress # 压缩旧日志(.gz格式)
delaycompress # 延迟压缩,避免当天日志被压缩
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮转
create 0640 root root # 创建新日志文件的权限和所有者
sharedscripts # 所有日志轮转完成后执行脚本
postrotate
/bin/kill -HUP $(cat /var/run/myapp.pid 2>/dev/null) 2>/dev/null || true # 通知应用重新打开日志文件
endscript
}
- 手动测试:执行
sudo logrotate -vf /etc/logrotate.d/my-ja va-app,强制运行并查看效果。
五、集中化日志管理(ELK Stack)
如果系统是分布式的,或者有多个应用,分散的日志管理起来太痛苦。这时候ELK Stack(Elasticsearch + Logstash + Kibana)就是标准答案,可以实现集中收集、存储、分析和可视化。
- 安装组件:通过Ubuntu默认仓库安装:
sudo apt update && sudo apt install elasticsearch logstash kibana。 - 配置Logstash:创建一个
logstash.conf文件,定义输入(比如用file插件读取Ja va日志)、过滤(用grok解析日志格式)、输出(存到Elasticsearch)。示例如下:
input {
file {
path => "/var/log/myapp/*.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} [%{THREAD:thread}] %{LOGLEVEL:loglevel} %{JA VACLASS:class} - %{GREEDYDATA:logmessage}" }
}
date {
match => [ "timestamp", "ISO8601" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
}
stdout { codec => rubydebug } # 控制台输出,调试用
}
- 启动服务:依次启动三个组件:
sudo systemctl start elasticsearch && sudo systemctl start logstash && sudo systemctl start kibana。 - 访问Kibana:浏览器输入
http://localhost:5601,配置索引模式(比如logstash-*),就能可视化和分析日志了。
作者最新文章
纯纯写作
2026-09-16 17:42
JMeter入门:创建HTTP请求并验证响应结果
2026-09-02 10:20
文件表格制作教程:选择Word或Excel的判断方法
2026-09-02 09:45
多个PPT怎么一次性转PDF?PPT批量转换工具有哪些?
2026-09-02 06:00
PDF图纸转CAD的3种方法及比例校准指南
2026-09-01 18:36
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































