1. 基础命令行工具(适合简单实时查看)
tail -f /path/to/java/app.log命令可实时显示日志文件的最后几行,文件更新时自动刷新,适用于快速检查日志最新内容的场景。/ERROR),比tail -f更灵活,适合需要偶尔回溯日志的场景。multitail -e "ERROR" /var/log/java/*.log),适用于需要对比多个日志流的运维场景。2. ELK Stack(Elasticsearch+Logstash+Kibana,适合大规模日志分析)
ELK是Java日志集中管理的经典解决方案,由三部分组成:
/path/to/java/app.log)收集数据,通过file input插件读取日志,可添加grok filter解析日志格式(如提取时间戳、日志级别),并将处理后的数据发送到Elasticsearch。NullPointerException”)。logstash.conf文件(指定input路径、filter规则、output到Elasticsearch),并通过systemctl start elasticsearch、systemctl start kibana启动服务。3. Graylog(适合集中管理与告警)
Graylog是基于Elasticsearch的开源日志聚合工具,专注于集中管理多源日志(如Java应用、系统日志、网络设备日志)。其核心功能包括:
level=ERROR)搜索。OutOfMemoryError时发送邮件/Slack通知)。server.conf(设置Elasticsearch地址)和web.conf(设置Web访问端口),并通过systemctl start graylog-server启动。4. mtail(轻量级指标提取,适合无侵入监控)
mtail是通过正则表达式从日志中提取指标的轻量级工具,无需修改Java代码,直接运行在CentOS服务器上。其工作原理为:
mtail脚本(如java_log.mtail),定义日志路径(/path/to/java/app.log)和正则表达式(如error_count += count(match(/ERROR/)))。mtail命令(mtail -f java_log.mtail),实时提取日志中的指标(如错误日志数量、请求耗时分布)。5. rsyslog/syslog-ng(适合日志转发与集中收集)
rsyslog和syslog-ng是CentOS自带的日志收集工具,可将Java日志(如通过log4j或logback配置的SyslogAppender输出的日志)转发到远程集中日志服务器(如ELK或Graylog)。
/etc/rsyslog.conf文件,添加*.* @remote-log-server:514(UDP转发)或*.* @@remote-log-server:514(TCP转发),重启服务后即可将Java日志发送到远程服务器。/etc/syslog-ng/syslog-ng.conf配置,使用source定义Java日志来源(如file("/path/to/java/app.log")),destination定义转发目标(如network("remote-log-server", port(514)))。6. JMX(适合Java应用内部监控)
JMX(Java Management Extensions)是Java原生监控框架,可通过配置开启远程监控,查看Java应用的日志及相关指标(如内存使用、线程状态)。
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=22221 -Dcom.sun.management.jmxremote.authenticate=false(简化配置,生产环境需开启认证)。jconsole(图形化工具)或VisualVM(更强大的监控工具)连接到localhost:22221,通过MBeans标签查看java.util.logging或第三方日志框架(如Log4j)的日志配置和内容。