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日志輸出 內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python實現自定義日志的具體方法
- Python 第三方日志框架loguru使用
- python和websocket構建實時日志跟蹤器的步驟
- 解決python logging遇到的坑 日志重復打印問題
- python 實現多進程日志輪轉ConcurrentLogHandler
- python 實現logging動態變更輸出日志文件名
- python (logging) 日志按日期、大小回滾的操作
- python基于pexpect庫自動獲取日志信息
- Python日志打印里logging.getLogger源碼分析詳解
- python subprocess pipe 實時輸出日志的操作
- Python中logging日志的四個等級和使用
- 如何在Python項目中引入日志