from collections import Counter as cntr
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.family'] ='Malgun Gothic'
plt.rcParams['axes.unicode_minus'] =False
docs_path = "c:\\Users\\itwill\\Documents"
file_name = "alert_log.txt"
with open(f"{docs_path}\\{file_name}", "r", encoding="utf-8") as f:
logs = f.read()
log_lines = logs.split()
err_codes = []
for line in log_lines :
for words in line.split(" ") :
if "ORA-" in words:
err_codes.append(words.strip(":"))
while True:
print('dba 작업을 편하게 하기 위한 자동화 스크립트')
print('1. alert log file 뒷부분')
print('2. 에러별 카운트 통계')
print('3. 전체 에러 메시지 종류 개수 세기')
print('9. 프로그램 종료')
print('-----------------------')
num=input('번호를 입력해주세요 : ')
if num == '1':
print(logs[-700:])
elif num == '2':
cntr_err = cntr(err_codes)
df = pd.DataFrame(list(cntr_err.items()), columns=["code", "cnt"])
df_filtered = df.loc[ df.cnt >= 20 , :].sort_values(by='cnt', ascending=False)
code_data = df_filtered.loc[:, ['code']]
cnt_data = df_filtered.loc[:, ['cnt']]
plt.bar(code_data['code'],cnt_data['cnt'], color='green')
plt.xticks(rotation=45)
plt.show()
elif num == '3':
print(cntr(err_codes))
elif num =='9':
break
break