通過grep 獲取MySQL錯(cuò)誤日志信息的方法代碼示例

本篇文章給大家?guī)淼膬?nèi)容是關(guān)于怎么通過grep 獲取mysql錯(cuò)誤日志信息的方法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

為方便維護(hù)MySQL,寫了個(gè)腳本用以提供收集錯(cuò)誤信息的接口。這些錯(cuò)誤信息來自與MySQL錯(cuò)誤日志,而 通過grep mysql可以獲取error-log的路徑。

#!/usr/bin/env?python2.7 #-*-?encoding:?utf-8?-*-  """ 該模塊用于提取每天mysql日志中的異常或錯(cuò)誤信息 author:?xiaomo email:?moxiaomomo@gmail.com """  import?os import?sys import?string from?datetime?import?*  #?預(yù)設(shè)字符解碼器為utf-8 reload(sys) sys.setdefaultencoding('utf-8')?  COMMON_FLAGS?=?["error",?"exception",?"fail",?"crash",?"repair"]  def?_contain_flag(cur_str): ????for?flag?in?COMMON_FLAGS: ????????if?flag?in?string.lower(cur_str): ????????????return?True ????return?False  """ 獲取當(dāng)前mysql實(shí)例的error_log文件路徑 """ def?_get_mysql_error_log_path(): ????log_path?=?'' ????grep_infos?=?os.popen('ps?aux?|?grep?mysql?|?grep?"log-error"').read() ????if?len(grep_infos)?>?1: ????????grep_infos?=?grep_infos.split("log-error=") ????if?len(grep_infos)?>?1: ????????grep_infos?=?grep_infos[1].split('?') ????if?len(grep_infos)?>?1: ????????log_path?=?grep_infos[0] ????return?log_path  """ 讀取mysql錯(cuò)誤日志中包含異常或錯(cuò)誤信息的行 """ def?_get_error_info(error_log,?begin_date): ????error_infos?=?[] ????f?=?open(error_log,?'r') ????lines?=?f.readlines() ????for?line?in?lines: ????????data_array?=?line.split('?') ????????if?len(data_array)?>?0?and?len(data_array[0])?==?10: ????????????dt_strs?=?data_array[0].split('-') ????????????cur_date?=?date(int(dt_strs[0]),?int(dt_strs[1]),?int(dt_strs[2])) ????????????if?cur_date?>=?begin_date?and?_contain_flag(line): ????????????????error_infos.append(line) ????f.close() ????return?error_infos  """ 組裝并返回mysql錯(cuò)誤日志信息 """ def?get_mysql_errors(begin_date=date.today()-timedelta(1)): ????try: ????????err_log_path?=?_get_mysql_error_log_path() ????????if?len(err_log_path)?>?1: ????????????return?_get_error_info(err_log_path,?begin_date) ????except?Exception,e: ????????print?"[get_mysql_errors]%s"%e??? ????return?[]

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊11 分享