一、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提供可視化分析界面(如日志趨勢圖、錯誤統計)。