适用于快速查看Java日志文件的实时更新,无需额外工具,操作简单。
tail -f命令:实时显示日志文件的最新内容,是运维人员最常用的工具。例如,查看/var/log/myapp.log的实时日志,执行tail -f /var/log/myapp.log,按Ctrl+C停止。grep过滤关键信息:结合tail -f使用,可筛选出包含特定关键词(如ERROR、Exception)的日志行,快速定位问题。例如,tail -f /var/log/myapp.log | grep "ERROR"。journalctl命令:若Java应用作为systemd服务运行(如通过systemctl start my-java-app.service启动),可使用journalctl查看其日志。journalctl -u my-java-app.service -f可实时跟踪该服务的日志输出,支持按时间范围(如--since "1 hour ago")筛选。适用于需要集中管理、实时分析、可视化大量Java日志的场景(如生产环境),功能强大但需一定配置。
grok过滤器提取关键字段(如时间戳、日志级别、类名)。yum安装Elasticsearch、Logstash、Kibana(sudo yum install elasticsearch logstash kibana)。/etc/logstash/conf.d/java.conf文件,定义输入(file插件读取Java日志文件)、过滤(grok解析日志格式)、输出(elasticsearch存储到ES,stdout打印到控制台)。例如:input {
file {
path => "/path/to/your/java/logs/*.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{JAVACLASS:class}: %{GREEDYDATA:logmessage}" }
}
date {
match => [ "timestamp", "ISO8601" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "java-logs-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
sudo systemctl start elasticsearch)、Logstash(sudo systemctl start logstash)、Kibana(sudo systemctl start kibana)。http://localhost:5601,配置索引模式(如java-logs-*),即可实时查看、搜索Java日志。防止Java日志文件过大占用磁盘空间,确保实时分析时日志文件的可管理性。
/etc/logrotate.d/目录下创建Java日志的轮转配置文件(如java),内容示例如下:/path/to/your/java/logs/*.log {
daily # 每天轮转
rotate 7 # 保留7个历史日志文件
compress # 压缩旧日志(节省空间)
missingok # 若日志文件不存在也不报错
notifempty # 若日志为空则不轮转
create 0640 root adm # 创建新日志文件的权限和所有者
}
sudo logrotate -d /etc/logrotate.d/java可模拟轮转过程,检查配置是否正确。适用于需要实时提取日志指标(如请求耗时、错误次数)且不想修改业务代码的场景,资源占用低。
yum安装mtail(sudo yum install multitail),然后执行multitail /path/to/your/java.log,可同时监控多个日志文件,支持颜色高亮、分屏显示。也可通过正则表达式提取特定字段(如multitail -e "ERROR" /path/to/your/java.log仅显示错误日志)。以上方法覆盖了从基础到高级的Java日志实时分析需求,可根据实际场景选择合适的方式(如小型项目用tail -f+grep,大型项目用ELK Stack)。