詳解python日志輸出使用配置文件格式
python腳本日志輸出使用配置文件的形式,不需要在每個(gè)腳本里面配置日志。
需求簡述:
如我要寫2個(gè)腳本(a.py和b.py),a.py日志輸出到/var/log/a.log,b.py日志輸出到/var/log/b.log,并且日志按日期切割。如果每個(gè)腳本都去配置一遍日志的話,浪費(fèi)時(shí)間也不利于后期維護(hù)。
現(xiàn)在我要使用配置文件的格式去統(tǒng)一管理python腳本的代碼日志輸出,后續(xù)所有python腳本日志都在這個(gè)配置文件里面配置,腳本讀取。方便后續(xù)維護(hù)和增加腳本的可讀性。
需求實(shí)現(xiàn):
我配置文件路徑及內(nèi)容:
vim /data/yw/conf/logconf.conf [loggers] keys=root,alog,blog [handlers] keys=handdef,handalog,handblog [formatters] keys=formatdef ############################################### [logger_root] level=DEBUG handlers=handdef [logger_alog] level=DEBUG # 如果同時(shí)使用handalog,handdef ,那么在執(zhí)行a.py腳本的時(shí)候日志即輸出到控制臺(tái),也輸出到日志文件 handlers=handalog,handdef qualname=alog propagate=0 [logger_blog] #b.py 的日志我不讓他輸出到控制臺(tái),所以不用handdef 這個(gè)hands去處理日志 level=DEBUG handlers=handblog qualname=blog propagate=0 ############################################### [handler_handdef] # 輸出到控制臺(tái) class=StreamHandler level=INFO formatter=formatdef args=(sys.stderr,) [handler_handalog] # a.py 日志我按時(shí)間切割 # handlers.TimedRotatingFileHandler:使用時(shí)間格式切割日志,midnight為凌晨切割 # 如果配置按時(shí)#間切割的話可以這樣:class=FileHandler,然后寫個(gè)腳本定時(shí)去切割。 class=handlers.TimedRotatingFileHandler level=DEBUG formatter=formatdef args=('/var/log/a.log', 'midnight') #args=('/var/log/a.log', 'a') 不使用時(shí)間切割可以這樣配置args #另一種寫法:面三個(gè)參數(shù)含義: D 按天切割 1 每天只切割一個(gè)文件 5 保留5個(gè)日志文件 #args=('/data/ywlog/cron/cron_dbbackup.log', 'D', 1, 5) [handler_handblog] # b.py 日志我不進(jìn)行切割 class=FileHandler level=DEBUG formatter=formatdef args=('/var/log/b.log', 'a') ############################################### [formatter_formatdef] format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s' datefmt='%a, %d %b %Y %H:%M:%S'
腳本引用配置文件:
vi a.py
#!/usr/bin/python # coding=utf-8 import logging, logging.config reload(sys) sys.setdefaultencoding('utf8') logging.config.fileConfig("/data/yw/conf/logconf.conf") logger = logging.getLogger('alog') #alog 為logconf.conf loggers 配置的關(guān)鍵字 # 日志輸出 logger.info("aaaa 正確日志") logger.error("aaaa 錯(cuò)誤日志")
vi b.py
#!/usr/bin/python # coding=utf-8 import logging, logging.config reload(sys) sys.setdefaultencoding('utf8') logging.config.fileConfig("/data/yw/conf/logconf.conf") logger = logging.getLogger('blog') #blog 為logconf.conf loggers 配置的關(guān)鍵字 # 日志輸出 logger.info("bbbb 正確日志") logger.error("bbbb 錯(cuò)誤日志")
測試結(jié)果:
執(zhí)行a.py腳本的時(shí)候發(fā)現(xiàn)日志輸出到控制臺(tái)也輸入到日志文件里面,但是執(zhí)行b.py 時(shí),日志只輸入到日志文件了。和配置文件注釋的一樣。
后期如果我還要添加c.py, d.py 腳本的話我只需要按照上面的格式去配置即可。不需要在腳本里面去配置。
到此這篇關(guān)于詳解python日志輸出使用配置文件格式的文章就介紹到這了,更多相關(guān)python日志輸出 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python實(shí)現(xiàn)自定義日志的具體方法
- Python 第三方日志框架loguru使用
- python和websocket構(gòu)建實(shí)時(shí)日志跟蹤器的步驟
- 解決python logging遇到的坑 日志重復(fù)打印問題
- python 實(shí)現(xiàn)多進(jìn)程日志輪轉(zhuǎn)ConcurrentLogHandler
- python 實(shí)現(xiàn)logging動(dòng)態(tài)變更輸出日志文件名
- python (logging) 日志按日期、大小回滾的操作
- python基于pexpect庫自動(dòng)獲取日志信息
- Python日志打印里logging.getLogger源碼分析詳解
- python subprocess pipe 實(shí)時(shí)輸出日志的操作
- Python中l(wèi)ogging日志的四個(gè)等級(jí)和使用
- 如何在Python項(xiàng)目中引入日志
相關(guān)文章
Python(wordcloud)如何根據(jù)文本數(shù)據(jù)(.txt文件)繪制詞云圖
這篇文章主要給大家介紹了關(guān)于Python(wordcloud)如何根據(jù)文本數(shù)據(jù)(.txt文件)繪制詞云圖的相關(guān)資料,詞云Wordcloud是文本數(shù)據(jù)的一種可視化表示方式,它通過設(shè)置不同的字體大小或顏色來表現(xiàn)每個(gè)術(shù)語的重要性,需要的朋友可以參考下2024-05-05python使用requests?POST提交一個(gè)鍵多個(gè)值方式
這篇文章主要介紹了python使用requests?POST提交一個(gè)鍵多個(gè)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Python使用open函數(shù)的buffering設(shè)置文件緩沖方式
這篇文章主要介紹了Python使用open函數(shù)的buffering設(shè)置文件緩沖方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02教你如何使用Python快速爬取需要的數(shù)據(jù)
學(xué)點(diǎn)數(shù)據(jù)爬蟲基礎(chǔ)能讓繁瑣的數(shù)據(jù)CV工作(Ctrl+C,Ctrl+V)成為自動(dòng)化就足夠了.作為一名數(shù)據(jù)分析師而并非開發(fā)工程師,需要掌握的爬蟲必備的知識(shí)內(nèi)容,能獲取需要的數(shù)據(jù)即可 ,需要的朋友可以參考下2021-06-06python利用faker庫批量生成測試數(shù)據(jù)
小編經(jīng)常需要批量測試一些數(shù)據(jù),有時(shí)候測試環(huán)境又暫時(shí)沒數(shù)據(jù),特意找了一下,發(fā)現(xiàn)有一個(gè)可批量生成數(shù)據(jù)的python庫—-faker,現(xiàn)在就介紹一下它的使用方法,如果你不想一行一行輸入代碼,小編提供了完整測試代碼,見文末代碼章節(jié)。2020-10-10