# 定義logger模塊,root是父類,必需存在的,其它的是自定義。
# logging.getLogger(NAME)便相當于向logging模塊注冊了一種日志打印
# name 中用 . 表示 log 的繼承關系
[loggers]
keys=root,simpleExample
# 設置hand-變量名 key值下面具體設置
[handlers]
keys=fileHandler,consoleHandler,fileHandler1
# 設置輸出格式-變量名 key值下面具體設置
[formatters]
keys=simpleFormatter
# 生效的 hand變量
[logger_root]
# 實現上面定義的logger模塊,必需是[logger_xxxx]這樣的形式
# [logger_xxxx] logger_模塊名稱
# level 級別,級別有DEBUG、INFO、WARNING、ERROR、CRITICAL
# handlers 處理類,可以有多個,用逗號分開
# qualname logger名稱,應用程序通過 logging.getLogger獲取。對于不能獲取的名稱,則記錄到root模塊。
# propagate 是否繼承父類的log信息,0:否 1:是
level=DEBUG
handlers=fileHandler1,fileHandler
[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0
# 頭輸出格式,需要先設置-hand變量
[handler_consoleHandler]
# [handler_xxxx]
# class handler類名
# level 日志級別
# formatter,上面定義的formatter
# args handler初始化函數參數
class=StreamHandler
args=(sys.stdout,)
level=DEBUG
formatter=simpleFormatter
# 頭輸出格式,需要先設置-hand變量
[handler_fileHandler]
class=logging.handlers.TimedRotatingFileHandler
args=('%(fileName)s'+'log-error', 'D', 1, 30)
level=ERROR
formatter=simpleFormatter
# 頭輸出格式,需要先設置-hand變量
[handler_fileHandler1]
class=logging.handlers.TimedRotatingFileHandler
args=('%(fileName)s'+'log-info', 'D', 1, 30)
level=INFO
formatter=simpleFormatter
# 輸出格式-需要先設置-格式變量名
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt= %y-%m-%d %H:%M:%S
# 時間格式
二、創建日志對象
import logging.config
import os
import time
#######################################################
# 日志配置
# 讀取日志配置文件內容
logging.config.fileConfig("logging.conf", defaults={'fileName': 'logs'})
# 創建一個日志器logger
logger = logging.getLogger("simpleExample")
# 創建日志文件
for i in range(0, 10):
logging.debug("logging.debug")
logging.info("logging.info")
logging.warning("logging.warning")
logging.error("logging.error")
time.sleep(2)
三、TimedRotatingFileHandler說明
TimedRotatingFileHandler構造函數聲明
class logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None)
filename 日志文件名前綴
when 日志名變更時間單位
'S' Seconds
'M' Minutes
'H' Hours
'D' Days
'W0'-'W6' Weekday (0=Monday)
'midnight' Roll over at midnight
interval 間隔時間,是指等待N個when單位的時間后,自動重建文件
backupCount 保留日志最大文件數,超過限制,刪除最先創建的文件;默認值0,表示不限制。
delay 延遲文件創建,直到第一次調用emit()方法創建日志文件
atTime 在指定的時間(datetime.time格式)創建日志文件。