Linux环境下WebLogic日志分析与故障排查指南
WebLogic日志文件集中存储在域目录下的servers子目录中,不同日志对应不同功能:
DOMAIN_HOME/servers/<server_name>/logs/<server_name>.log。DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log(管理服务器默认路径)。DOMAIN_HOME/servers/<server_name>/logs/access.log。tail -f命令实时跟踪日志新增内容(如tail -f DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log),便于监控实时运行状态。grep命令过滤特定关键字(如错误、警告),例如grep "ERROR" server.log可提取所有错误日志;grep -C 5 "Timeout" access.log可显示匹配行及前后5行上下文,帮助定位问题场景。awk提取日志中的关键字段(如时间、状态码),例如awk '{print $1, $2, $9}' access.log可提取访问日志中的时间、IP和HTTP状态码,便于统计分析。awk统计特定时间段内的错误日志数量(如2025-10-18的ERROR日志),例如awk '/ERROR/ && $1=="2025-10-18" {count++} END {print "Error count:", count}' server.log。sort和uniq分析高频错误(如grep "ERROR" server.log | sort | uniq -c | sort -nr),快速找出出现次数最多的错误类型。通过WebLogic控制台调整日志级别(Environment > Servers > <server_name> > Logging),级别从低到高依次为:
INFO,排查问题时临时调整为DEBUG,避免日志量过大。配置日志滚动以避免单个日志文件过大(影响读取效率),通过控制台设置:
Rolling Policy > Time-based,设置Rolling Period为Daily);Rolling Policy > Size-based,设置File Size为100MB);Keep Files为7,保留最近7天的日志)。java.net.BindException: Address already in use(端口冲突)。BindException错误及发生时间;config.xml中的端口配置(如<listen-port>),确认是否与其他服务(如Apache、Nginx)端口冲突;config.xml中的端口(如将7001改为7002),重启服务器。java.sql.SQLException: Connection timed out(连接超时)。SQLException错误及连接池名称(如jdbc/MyDB);ping、telnet测试端口);Environment > Servers > <server_name> > Services > Data Sources),调整连接池参数(增加Max Capacity、设置Connection Timeout为30秒)。java.lang.OutOfMemoryError: PermGen space(永久代内存溢出)或OutOfMemoryError: Java heap space(堆内存溢出)。OutOfMemoryError错误及发生时间;startWebLogic.sh中增加-Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m);jmap和jvisualvm工具分析内存使用情况(如jmap -dump:format=b,file=heap.hprof <pid>导出堆转储文件,用jvisualvm打开分析内存泄漏点)。file插件采集WebLogic日志,通过Elasticsearch索引日志数据,用Kibana创建可视化面板。getMessages()方法),便于批量处理和分析。access.log),生成HTML报告;