logging.handler 調(diào)整 elastalert 日志格式,并按天滾動(dòng)

背景:

  1. 我的項(xiàng)目都使用filebeat來采集日志
  2. 大部分項(xiàng)目都是Java項(xiàng)目,直接使用slf4j來打印日志玉凯,每行日志的開頭都是時(shí)間戳
  3. 因此在filebeat中直接配置一個(gè)匹配時(shí)間戳的正則,就完成了日志分行
  4. 要用filebeat采集elastalert的日志联贩,并且想復(fù)用原來的正則

所以需要格式化一下elastalert的日志格式壮啊,方便我采集。

查看一下代碼撑蒜,elastalert 的日志都用 util.py 中的這個(gè)logger來打印痊银,如下:

elastalert.py 中打印日志的代碼

這個(gè)logger就是util.py中的

logging.basicConfig()
elastalert_logger = logging.getLogger('elastalert')

啥都沒設(shè)置呻征,就寫了個(gè)名字elastalert

一張白紙啊茅郎,可以隨意改蜒车!

先點(diǎn)進(jìn)去看一下logging.basicConfig()的代碼杂数,發(fā)現(xiàn)功能有限疫铜,不能實(shí)現(xiàn)我們需要按天滾動(dòng)日志的需求彻磁,所以我們使用Handler

logging.basicConfig()

首先要給他加上時(shí)間戳留凭,為了方便找到日志岁钓,還可以打印是哪個(gè)文件多少行的日志升略,
所以我的日志格式定義為:

log_fmt = '%(asctime)s.%(msecs)03d %(threadName)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'

解釋一下:

  • asctime: 時(shí)間戳,%s
  • msecs: 毫秒屡限,%03d
  • filename: 打印日志的文件名稱品嚣, %s
  • line: 打印日志的行號(hào),%d
  • levelname: 日志等級(jí)钧大,%s
  • message: 日志內(nèi)容翰撑,%s

formater 支持的參數(shù)小計(jì)

  • levelno打印日志級(jí)別的數(shù)值,%s
  • levelname:打印日志級(jí)別名稱啊央,%s
  • pathname:打印當(dāng)前執(zhí)行程序的路徑眶诈,其實(shí)就是sys.argv[0],%s
  • filename:打印當(dāng)前執(zhí)行程序文件名瓜饥,%s
  • funcName:打印日志的當(dāng)前函數(shù)逝撬,%s
  • lineno:打印日志的當(dāng)前行號(hào),%d
  • asctime:打印日志的時(shí)間乓土,%s
  • thread:打印線程ID宪潮,%d
  • threadName:打印線程名稱溯警,%s
  • process:打印進(jìn)程ID,%d
  • message:打印日志信息坎炼,%s

因?yàn)?code>logging中默認(rèn)的時(shí)間戳是 %Y-%m-%d %H:%M:%S,%f愧膀,但是我就想要秒%S和毫秒%f中間的符號(hào)是點(diǎn).,不是逗號(hào),谣光。但是 strftime() 并不支持格式化到毫秒檩淋,所以要把時(shí)間戳asctime格式化為%Y-%m-%d %H:%M:%S, 然后拼上點(diǎn).msecs這個(gè)屬性萄金。

接下來蟀悦, 定義時(shí)間戳的格式,然后放入logging.Formatter()

date_fmt = '%Y-%m-%d %H:%M:%S'
formatter = logging.Formatter(log_fmt, date_fmt)

寫一個(gè)生成日志文件的handler

# 日志文件
log_file_handler = TimedRotatingFileHandler(
    filename='${日志文件路徑}/${日志文件名}.log',
    when='M',
    interval=2,
    backupCount=3)
log_file_handler.suffix = '%Y-%m-%d'
log_file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.\d{2}:\d{2}$")
log_file_handler.setLevel(logging.INFO)
log_file_handler.setFormatter(formatter)
elastalert_logger.addHandler(log_file_handler)

解釋一下:

  • filename: 就是生成日志文件的文件名
  • when: 觸發(fā)滾動(dòng)的時(shí)間單位
  • interval: 觸發(fā)滾動(dòng)的周期氧敢,如when='M'日戈,interval=2,即每?jī)煞昼姖L動(dòng)一次
  • backupCount: 最大滾動(dòng)文件數(shù)
  • suffix: 文件后綴孙乖,滾動(dòng)文件會(huì)在文件名后添加的后綴
  • extMatch: 文件后綴符合的正則浙炼,用于刪除超過backupCount數(shù)目的日志文件

按照上述我的配置,即每2分鐘滾動(dòng)一個(gè)新的日志文件唯袄,最多存在三個(gè)滾動(dòng)文件弯屈。
當(dāng)前正在寫入的文件名稱為${日志文件路徑}/${日志文件名}.log
滾動(dòng)后的文件名稱為${日志文件路徑}/${日志文件名}.log.%Y-%m-%d

再寫一個(gè)控制臺(tái)打印日志的handler

# 控制臺(tái)日志
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(formatter)
elastalert_logger.addHandler(console_handler)

這樣,elastalert中日志的打印就調(diào)整好了恋拷。

2019-01-22 16:45:30.569 MainThread elastalert.py[line:1115] INFO Starting up
2019-01-22 16:45:30.573 MainThread elastalert.py[line:1245] INFO Sleeping for 29.999984 seconds

tags: [elastalert] [python 2.7]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末资厉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蔬顾,更是在濱河造成了極大的恐慌宴偿,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诀豁,死亡現(xiàn)場(chǎng)離奇詭異窄刘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)且叁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門都哭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逞带,你說我怎么就攤上這事欺矫。” “怎么了展氓?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵穆趴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我遇汞,道長(zhǎng)未妹,這世上最難降的妖魔是什么簿废? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮络它,結(jié)果婚禮上族檬,老公的妹妹穿的比我還像新娘。我一直安慰自己化戳,他們只是感情好单料,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著点楼,像睡著了一般扫尖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掠廓,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天换怖,我揣著相機(jī)與錄音,去河邊找鬼蟀瞧。 笑死沉颂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悦污。 我是一名探鬼主播兆览,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼塞关!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起子巾,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤帆赢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后线梗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椰于,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年仪搔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘾婿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烤咧,死狀恐怖偏陪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情煮嫌,我是刑警寧澤笛谦,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站昌阿,受9級(jí)特大地震影響饥脑,放射性物質(zhì)發(fā)生泄漏恳邀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一灶轰、第九天 我趴在偏房一處隱蔽的房頂上張望谣沸。 院中可真熱鬧,春花似錦笋颤、人聲如沸乳附。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽许溅。三九已至,卻和暖如春秉版,著一層夾襖步出監(jiān)牢的瞬間贤重,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工清焕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留并蝗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓秸妥,卻偏偏與公主長(zhǎng)得像滚停,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粥惧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,990評(píng)論 0 13
  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,756評(píng)論 0 8
  • 常用模塊 認(rèn)識(shí)模塊 什么是模塊 什么是模塊突雪? 常見的場(chǎng)景:一個(gè)模塊就是一個(gè)包含了python定義和聲明的文件起惕,文...
    go以恒閱讀 1,947評(píng)論 0 6
  • 1. 通過logging.basicConfig函數(shù)對(duì)日志的輸出格式及方式做相關(guān)配置 logging.basicC...
    Shirley_奮進(jìn)中的蝦米閱讀 1,186評(píng)論 0 0
  • 堅(jiān)持百天寫作惹想,第3天 昨天是不寫就出局007行動(dòng)135班成立第一個(gè)值月團(tuán)隊(duì),完成首次分組的日子督函。習(xí)慣潛水的我嘀粱,也在...
    劉先生的哲閱讀 301評(píng)論 0 1