阅读量:81
在Ubuntu中查看Java编译/运行日志的常用方法
1. 确定日志文件位置
Java项目的日志文件路径取决于配置方式,常见位置包括:
- 项目工作目录:如
./logs/或项目根目录下的.log文件; - 框架配置指定路径:若使用Log4j、Logback等框架,需检查
log4j.properties或logback.xml中的logging.file.path(如logs/app.log); - 应用服务器日志:若部署在Tomcat中,日志位于
$CATALINA_HOME/logs/(如catalina.out);若为Spring Boot,默认在./logs/或/var/log/下。
2. 基础命令行工具查看日志
① 查看完整日志文件
使用cat命令直接输出文件全部内容(适合小文件):
cat /path/to/java.log
② 分页查看大文件
使用less命令(支持上下翻页、搜索):
less /path/to/java.log
# 搜索关键词(按/键输入):/ERROR
# 退出:按q键
③ 实时监控日志更新
使用tail -f命令(适合跟踪实时日志,如编译错误或运行异常):
tail -f /path/to/java.log
# 实时查看最后100行:tail -n 100 -f /path/to/java.log
④ 搜索特定内容
使用grep命令过滤关键词(如“ERROR”“Exception”):
grep "ERROR" /path/to/java.log # 输出包含ERROR的行
grep -i "error" /path/to/java.log # 忽略大小写
grep -E "ERROR|Exception" /path/to/java.log # 正则表达式匹配
⑤ 复杂日志处理
awk:提取特定字段(如时间戳+日志级别):awk '{print $1, $2, $3}' /path/to/java.log # 假设前3列为时间、级别、消息sed:提取包含关键词的行:sed -n '/ERROR/p' /path/to/java.log # 仅输出包含ERROR的行
3. 通过journalctl查看systemd服务日志
若Java应用以systemd服务运行(如my-java-app.service),可使用journalctl命令查看系统级日志:
sudo journalctl -u my-java-app.service # 查看指定服务的完整日志
sudo journalctl -f -u my-java-app.service # 实时监控服务日志
sudo journalctl --since "2025-11-08 10:00:00" --until "2025-11-08 11:00:00" -u my-java-app.service # 按时间范围过滤
4. 图形化工具查看日志
若偏好图形界面,可使用以下工具:
- gnome-system-monitor:Ubuntu自带,查看系统进程及简单日志;
- ELK Stack(Elasticsearch+Logstash+Kibana):专业日志分析平台(需安装配置);
- Graylog:开源SIEM工具,支持日志收集、搜索与可视化。
注意事项
- 若日志文件不存在,需确认Java应用的日志配置(如
logback.xml中是否启用了文件输出); - 对于大型项目,建议使用日志框架(如Logback)的滚动策略(如按日期分割日志),避免单个文件过大;
- 编译时的日志通常会在终端直接输出,若需保存可重定向到文件:
javac MyClass.java > compile.log 2>&1 # 将标准输出和错误输出都写入compile.log