Ubuntu上WebLogic日志管理技巧
WebLogic在Ubuntu上的日志集中存储在域目录的logs子目录中,路径格式为$DOMAIN_HOME/logs($DOMAIN_HOME为域根目录,可通过echo $DOMAIN_HOME命令确认)。主要日志文件包括:
server.log:服务器主日志,记录启动/关闭、异常、运行状态等核心信息;access.log:HTTP访问日志,记录请求URL、响应状态码、客户端IP等访问信息;diagnostic.log:诊断日志,记录系统警告、错误及详细诊断数据(如线程堆栈、内存使用)。tail -f命令跟踪日志文件的新增内容,例如tail -f $DOMAIN_HOME/logs/server.log,可动态监控服务器运行状态;grep命令快速定位特定信息,例如grep 'ERROR' $DOMAIN_HOME/logs/server.log可提取所有错误日志,grep '192.168.1.100' $DOMAIN_HOME/logs/access.log可查找指定IP的访问记录。日志轮转可自动分割、压缩旧日志,防止日志文件占用过多磁盘空间。常见方法有两种:
logrotate(Ubuntu原生支持)/etc/logrotate.d/weblogic配置文件,添加以下内容(以/u01/domains/mydomain/logs/*.log为例):/u01/domains/mydomain/logs/*.log {
daily # 每天轮转
rotate 7 # 保留7个轮转文件
compress # 压缩旧日志(如.gz格式)
missingok # 文件不存在时不报错
notifempty # 文件为空时不轮转
create 640 root adm # 新日志文件权限
sharedscripts # 所有日志处理完成后执行脚本
postrotate
/usr/bin/killall -HUP $(pgrep -f "weblogic.Server") # 发送HUP信号让WebLogic重新打开日志文件
endscript
}
测试配置是否正确:sudo logrotate -f /etc/logrotate.d/weblogic,查看/var/log/logrotate.log监控轮转结果。对于长期运行的服务器,需定期清理过期日志。可通过crontab设置定时任务:
crontab(crontab -e),添加以下内容(备份至/bakdir目录):0 0 * * * cp $DOMAIN_HOME/logs/server.log /bakdir/server_$(date -d yesterday +%Y%m%d).log; cat /dev/null > $DOMAIN_HOME/logs/server.log
crontab中添加:0 1 * * 0 cd /bakdir; find . -name "server_*.log" -mtime +7 -exec tar czvf server_$(date -d yesterday +%Y%U).tar.gz {} \;; find . -name "server_*.log" -mtime +60 -exec rm -f {} \;
说明:-mtime +7表示7天前的文件,-mtime +60表示60天前的文件,可根据需求调整。根据需求调整日志级别,减少无关日志的输出:
INFO(默认,记录常规信息)、DEBUG(调试信息,详细但占用空间大)、WARN(警告信息)、ERROR(错误信息)等级别;$DOMAIN_HOME/config/config.xml中的<log>标签,例如将<log-level>INFO</log-level>改为<log-level>DEBUG</log-level>,重启WebLogic生效。tail -n 50 $DOMAIN_HOME/logs/server.log:查看日志文件最后50行;grep -i 'exception' $DOMAIN_HOME/logs/server.log | wc -l:统计异常日志数量;awk '/ERROR/ {print $1, $2, $3}' $DOMAIN_HOME/logs/server.log:提取错误日志的时间戳和关键信息。ELK Stack(Elasticsearch+Logstash+Kibana)或Splunk,实现日志可视化、趋势分析和告警功能。