温馨提示×

centos下weblogic日志管理技巧

小樊
53
2025-10-03 02:43:38
栏目: 智能运维

一、WebLogic日志位置确认
在CentOS系统中,WebLogic日志的默认存储路径遵循域(Domain)结构,核心日志文件位于$DOMAIN_HOME/servers/<Server_Name>/logs目录下,常见文件包括:

  • server.log:服务器实例的主运行日志,记录启动/关闭信息、运行时错误及业务日志;
  • access.log:HTTP/HTTPS访问日志,记录客户端请求详情(如URL、状态码、响应时间);
  • domain.log:域级日志,汇总域内所有服务器的运行状态(如集群通信、资源监控)。
    其中,$DOMAIN_HOME为域根目录(如/user_projects/domains/your_domain),<Server_Name>为服务器实例名称(如AdminServer)。

二、日志级别动态调整
日志级别决定了日志的详细程度(从低到高:TRACE < DEBUG < INFO < WARNING < ERROR < SEVERE),可根据需求动态调整以平衡日志量与排查效率:

  1. 通过WebLogic控制台
    登录控制台(http://<服务器IP>:<端口>/console),导航至环境→服务器→<服务器名称>→日志→通用,修改“日志级别”下拉菜单(如设置为ERROR可仅记录错误信息),点击“保存”即可生效。
  2. 通过WLST脚本
    使用WLST(WebLogic Scripting Tool)自动化调整,示例脚本:
    connect('weblogic', '密码', 't3://localhost:7001')
    edit()
    startEdit()
    cd('/Servers/AdminServer/Logging/General')
    set('LogLevel', 'ERROR')  # 设置为ERROR级别
    save()
    activate()
    disconnect()
    
    运行脚本前需确保已配置WLST环境变量。

三、日志轮转配置(防止日志膨胀)
日志轮转可自动分割、压缩旧日志,保留指定数量的文件,避免单个日志文件过大占用磁盘空间。以下是两种常用方法:

1. 使用WebLogic内置配置(推荐)

通过控制台配置日志轮转规则,适用于大多数场景:

  • 导航至环境→服务器→<服务器名称>→日志→通用,修改以下参数:
    • 旋转类型:选择“按大小(By Size)”或“按时间(By Time)”;
      • 按大小:设置“旋转文件大小”(如5000KB,默认值,超过则触发轮转);
      • 按时间:设置“开始旋转时间”(如00:00,每天固定时间轮转)和“旋转间隔”(如24小时);
    • 保留文件数:勾选“限制保留文件数”,设置“保留文件数量”(如7个,保留最近7个日志文件);
    • 文件名格式:可选“包含日期戳”,如myserver_%yyyy%_%MM%_%dd%.log(轮转后文件名包含年月日,便于归档);
    • 旋转目录:默认与主日志文件同目录,可指定绝对路径(如/var/log/weblogic/archives)。

2. 使用logrotate工具(系统级轮转)

logrotate是Linux系统自带的日志管理工具,可强制定期轮转WebLogic日志(即使WebLogic未触发):

  • 安装logrotate(若未安装):
    sudo yum install logrotate -y
    
  • 创建WebLogic专用配置文件(/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退出实时模式。
  • 查看最后N行日志
    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退出
    
  • 查看系统日志中的WebLogic日志(若使用systemd):
    journalctl -u weblogic -f  # 实时查看weblogic服务的系统日志
    

五、日志清理策略
定期清理旧日志可释放磁盘空间,避免因日志过多导致系统性能下降,以下是三种常用方法:

  1. 通过WebLogic控制台
    导航至诊断→日志→日志文件,选择需清理的日志文件(如server.log),点击“编辑”,设置“日志文件保留时间”(如30天)和“最大日志文件数量”(如10个),勾选“自动删除旧日志”,点击“保存”。
  2. 通过WLST脚本
    示例脚本(清理7天前的.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}")
    
  3. 通过cron定时任务
    编辑cron任务(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服务器,可将日志集中收集到远程服务器进行分析,常用工具:

  • rsyslog/syslog-ng:将WebLogic日志发送到远程syslog服务器,配置示例(/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。
  • ELK Stack(Elasticsearch+Logstash+Kibana)
    Logstash作为日志收集器,解析WebLogic日志(如通过grok过滤器提取时间、级别、消息),发送到Elasticsearch存储,Kibana提供可视化分析界面(如日志趋势图、错误统计)。

0