一、WebLogic日志位置确认
在CentOS系统中,WebLogic日志的默认存储路径遵循域(Domain)结构,核心日志文件位于$DOMAIN_HOME/servers/<Server_Name>/logs目录下,常见文件包括:
$DOMAIN_HOME为域根目录(如/user_projects/domains/your_domain),<Server_Name>为服务器实例名称(如AdminServer)。二、日志级别动态调整
日志级别决定了日志的详细程度(从低到高:TRACE < DEBUG < INFO < WARNING < ERROR < SEVERE),可根据需求动态调整以平衡日志量与排查效率:
http://<服务器IP>:<端口>/console),导航至环境→服务器→<服务器名称>→日志→通用,修改“日志级别”下拉菜单(如设置为ERROR可仅记录错误信息),点击“保存”即可生效。connect('weblogic', '密码', 't3://localhost:7001')
edit()
startEdit()
cd('/Servers/AdminServer/Logging/General')
set('LogLevel', 'ERROR') # 设置为ERROR级别
save()
activate()
disconnect()
运行脚本前需确保已配置WLST环境变量。三、日志轮转配置(防止日志膨胀)
日志轮转可自动分割、压缩旧日志,保留指定数量的文件,避免单个日志文件过大占用磁盘空间。以下是两种常用方法:
通过控制台配置日志轮转规则,适用于大多数场景:
00:00,每天固定时间轮转)和“旋转间隔”(如24小时);myserver_%yyyy%_%MM%_%dd%.log(轮转后文件名包含年月日,便于归档);/var/log/weblogic/archives)。logrotate是Linux系统自带的日志管理工具,可强制定期轮转WebLogic日志(即使WebLogic未触发):
sudo yum install logrotate -y
/etc/logrotate.d/weblogic),内容示例:/path/to/weblogic/domain/logs/*.log {
daily # 每天轮转
rotate 7 # 保留7个旧日志
compress # 压缩旧日志(.gz格式)
missingok # 日志不存在时不报错
notifempty # 日志为空时不轮转
create 640 root adm # 新日志文件权限(属主root,属组adm)
sharedscripts # 所有日志轮转完成后执行脚本
postrotate
/bin/kill -HUP `cat /path/to/weblogic/domain/servers/AdminServer/tmp/AdminServer.pid 2>/dev/null` 2>/dev/null || true
endscript
}
说明:postrotate脚本通过kill -HUP向WebLogic进程发送信号,使其重新打开日志文件(避免日志丢失)。四、日志查看与过滤技巧
日常运维中,快速定位关键日志(如错误、警告)能提升排查效率,常用命令如下:
tail -f /path/to/weblogic/logs/server.log
按Ctrl+C退出实时模式。tail -n 100 /path/to/weblogic/logs/access.log # 查看最后100行访问日志
grep "ERROR" /path/to/weblogic/logs/server.log # 查找所有ERROR级别的日志
grep -i "timeout" /path/to/weblogic/logs/access.log # 忽略大小写查找“timeout”(如连接超报错)
less /path/to/weblogic/logs/domain.log # 按上下键翻页,按q退出
journalctl -u weblogic -f # 实时查看weblogic服务的系统日志
五、日志清理策略
定期清理旧日志可释放磁盘空间,避免因日志过多导致系统性能下降,以下是三种常用方法:
server.log),点击“编辑”,设置“日志文件保留时间”(如30天)和“最大日志文件数量”(如10个),勾选“自动删除旧日志”,点击“保存”。.log文件):import os
from datetime import datetime, timedelta
log_dir = '/path/to/weblogic/logs'
days_to_keep = 7
cutoff_date = datetime.now() - timedelta(days=days_to_keep)
for filename in os.listdir(log_dir):
if filename.endswith('.log'):
file_path = os.path.join(log_dir, filename)
mod_time = datetime.fromtimestamp(os.path.getmtime(file_path))
if mod_time < cutoff_date:
os.remove(file_path)
print(f"Deleted: {file_path}")
crontab -e),添加每日凌晨1点清理7天前日志的任务:0 1 * * * find /path/to/weblogic/logs -type f -name "*.log" -mtime +7 -exec rm -f {} \;
说明:-mtime +7表示修改时间超过7天的文件,-exec rm -f {} \;表示删除匹配的文件。六、日志集中化管理(可选进阶)
对于分布式环境或多台WebLogic服务器,可将日志集中收集到远程服务器进行分析,常用工具:
/etc/rsyslog.conf):local0.* @remote_syslog_server_ip:514 # UDP方式发送
local0.* @@remote_syslog_server_ip:514 # TCP方式发送(更可靠)
需在WebLogic启动脚本中添加-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/path/to/logging.properties,并在logging.properties中配置FileHandler输出到syslog。grok过滤器提取时间、级别、消息),发送到Elasticsearch存储,Kibana提供可视化分析界面(如日志趋势图、错误统计)。