Ubuntu 上 WebLogic 日志查看与分析
一 日志位置与关键文件
- 默认日志目录为 $DOMAIN_HOME/logs,常见文件包括:
- server.log:服务器运行日志(启动、部署、运行期异常等)。
- access.log:HTTP 访问日志(请求路径、状态码、耗时等)。
- diagnostic.log:诊断日志(诊断框架输出,便于故障定位)。
- domain.log:域级日志(跨服务器实例的域范围事件)。
- 多实例时,日志也可能位于 $DOMAIN_HOME/servers/$SERVER_NAME/logs 下,按服务器实例分别存放。可通过 echo $DOMAIN_HOME 确认域目录,再进入相应 servers/实例名/logs 查看。
二 命令行快速查看与检索
- 实时查看最新日志:
- tail -f $DOMAIN_HOME/logs/server.log
- 关键字过滤与上下文:
- grep -n ‘ERROR’ server.log
- grep -A 5 -B 5 ‘OutOfMemoryError’ server.log
- 按时间窗口统计错误数(示例:统计 2025-08-01 的 ERROR):
- awk ‘/2025-08-01/ && /ERROR/ {count++} END {print “ERROR count:”, count}’ server.log
- 多文件检索(访问日志等):
- grep ‘404’ $DOMAIN_HOME/logs/access.log
- 小文件快速浏览:
- 图形化工具(可选):
- Ubuntu 可用 gnome-system-log 浏览日志文件。
三 日志轮转与保留策略
- 系统级轮转(推荐):使用 logrotate 管理日志大小与保留天数。
- WebLogic 内置轮转:亦可在 config.xml 或通过控制台配置日志轮转参数(如按大小/时间切割)。
四 日志分析与可视化方案
- 命令行深度分析(示例):
- Top N 报错类型:
- grep -o ‘ERROR .*’ server.log | sort | uniq -c | sort -nr | head
- 统计某小时段 5xx 数量:
- awk ‘$2 ~ /:00:00/ && $0 ~ / 5[0-9]{2} / {count++} END {print “5xx count:”, count}’ access.log
- 结合系统资源定位瓶颈:
- top/htop、free、iostat 等查看 CPU/内存/磁盘 IO,与日志异常时间点交叉验证。
- 集中化与可视化:
- ELK Stack(Elasticsearch + Logstash + Kibana):收集、解析、索引与可视化 WebLogic 日志。
- Graylog / Splunk:集中日志管理、告警与报表。
五 实用排查路径与注意事项
- 快速定位思路:
- 先看 server.log 的异常栈与告警时间点 → 对照 access.log 检查对应时段 HTTP 状态码/耗时 → 必要时查看 diagnostic.log 获取更细诊断信息 → 若涉及多实例,核对 $DOMAIN_HOME/servers/$SERVER_NAME/logs 下对应实例日志。
- 运行与权限:
- 确保 weblogic 用户对日志目录与文件具备 读写权限,避免因权限导致日志无法写入或轮转失败。
- 定期 备份与归档 重要日志,控制磁盘占用。
- 日志级别与输出:
- 通过控制台或 WLST 调整日志级别(如 DEBUG/INFO/WARN/ERROR),必要时增加特定包/类的日志输出以定位问题。
- 远程集中与审计:
- 可配置 log4j/syslog 将日志发送至远程日志服务器,便于统一留存与审计。