詳解python日志輸出使用配置文件格式
python腳本日志輸出使用配置文件的形式,不需要在每個腳本裡面配置日志。
需求簡述:
如我要寫2個腳本(a.py和b.py),a.py日志輸出到/var/log/a.log,b.py日志輸出到/var/log/b.log,並且日志按日期切割。如果每個腳本都去配置一遍日志的話,浪費時間也不利於後期維護。
現在我要使用配置文件的格式去統一管理python腳本的代碼日志輸出,後續所有python腳本日志都在這個配置文件裡面配置,腳本讀取。方便後續維護和增加腳本的可讀性。
需求實現:
我配置文件路徑及內容:
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 ,那麼在執行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 #另一種寫法:面三個參數含義: 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 配置的關鍵字 # 日志輸出 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 配置的關鍵字 # 日志輸出 logger.info("bbbb 正確日志") logger.error("bbbb 錯誤日志")
測試結果:
執行a.py腳本的時候發現日志輸出到控制臺也輸入到日志文件裡面,但是執行b.py 時,日志隻輸入到日志文件瞭。和配置文件註釋的一樣。
後期如果我還要添加c.py, d.py 腳本的話我隻需要按照上面的格式去配置即可。不需要在腳本裡面去配置。
到此這篇關於詳解python日志輸出使用配置文件格式的文章就介紹到這瞭,更多相關python日志輸出 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python 內置logging 使用詳細介紹
- 如何在Python項目中引入日志
- Django項目如何正確配置日志(logging)
- python 日志模塊logging的使用場景及示例
- 解決python logging遇到的坑 日志重復打印問題