編寫高效的Tomcat日志分析腳本可以幫助你快速定位問題、監控性能以及優化系統。以下是一個使用Python編寫的示例腳本,該腳本可以解析Tomcat的catalina.out日志文件,并提取一些關鍵信息,如錯誤、警告、訪問統計等。
確保你已經安裝了Python,并且有一個Tomcat服務器正在運行,生成了catalina.out日志文件。
import re
from collections import defaultdict
# 定義日志文件路徑
LOG_FILE = '/path/to/tomcat/logs/catalina.out'
# 定義正則表達式模式
ERROR_PATTERN = re.compile(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*ERROR.*(.*)')
WARNING_PATTERN = re.compile(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*WARN.*(.*)')
ACCESS_PATTERN = re.compile(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*GET|POST.*')
# 初始化統計信息
error_count = 0
warning_count = 0
access_count = defaultdict(int)
def parse_log_line(line):
error_match = ERROR_PATTERN.search(line)
warning_match = WARNING_PATTERN.search(line)
access_match = ACCESS_PATTERN.search(line)
if error_match:
error_count += 1
print(f"Error: {error_match.group(1)} - {error_match.group(2)}")
if warning_match:
warning_count += 1
print(f"Warning: {warning_match.group(1)} - {warning_match.group(2)}")
if access_match:
access_count[access_match.group(3)] += 1
def analyze_log_file():
with open(LOG_FILE, 'r') as file:
for line in file:
parse_log_line(line)
print(f"Total Errors: {error_count}")
print(f"Total Warnings: {warning_count}")
print("Access Statistics:")
for path, count in access_count.items():
print(f"{path}: {count}")
if __name__ == "__main__":
analyze_log_file()
LOG_FILE變量設置為你的Tomcat日志文件路徑。defaultdict來統計訪問次數。parse_log_line函數用于解析每一行日志,并根據匹配結果更新統計信息。analyze_log_file函數讀取日志文件并調用parse_log_line函數來解析每一行日志,最后輸出統計信息。通過這種方式,你可以編寫一個高效的Tomcat日志分析腳本,幫助你更好地理解和監控Tomcat服務器的運行狀態。