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