常用模塊——日誌模塊
阿新 • • 發佈:2018-08-10
nco ctime close handler for 才會 style sed pan
logging模塊
一、logging作用
1. 控制日誌級別
2. 控制日誌格式
3. 控制輸出的目標為文件
二、日誌級別
1 logging.debug(‘debug日誌‘) # 10 2 logging.info(‘info日誌‘) # 20 3 logging.warning(‘warning日誌‘) #30 4 logging.error(‘error日誌‘)#40 5 logging.critical(‘critical日誌‘) #50
三、示例
import logging # 1. logger對象: 負責生產各種級別的日誌 logger1 = logging.getLogger(‘用戶交易‘) # 日誌名用來標識日誌的與什麽業務有關 # 2. filter對象: 過濾日誌(很少使用) # 3. handler對象: 控制日誌輸出目標位置,以及編碼標準 fh1 = logging.FileHandler(‘a1.log‘,encoding=‘utf-8‘) fh2 = logging.FileHandler(‘a2.log‘,encoding=‘utf-8‘) ch = logging.StreamHandler() # 4. formmater對象:控制日誌的格式 formatter1 = logging.Formatter( fmt=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s‘, datefmt=‘%Y-%m-%d %H:%M:%S %p‘ ) formatter2 = logging.Formatter( fmt=‘%(asctime)s - %(levelname)s : %(message)s‘, datefmt=‘%Y-%m-%d %H:%M:%S %p‘ ) # 5. 綁定logger對象與handler對象 logger1.addHandler(fh1) logger1.addHandler(fh2) logger1.addHandler(ch) # 6. 綁定handler對象與formatter對象 fh1.setFormatter(formatter1) fh2.setFormatter(formatter1) ch.setFormatter(formatter2)# 7. 設置日誌級別,有logger對象與handler對象兩層關卡,必須都放行最終日誌才會放行,通常二者級別相同 logger1.setLevel(10) fh1.setLevel(10) fh2.setLevel(10) ch.setLevel(10) # 8. 使用logger對象產生日誌 logger1.info(‘ffffffff‘)
四、log配置字典
LOGGING_DIC = { ‘version‘: 1, ‘disable_existing_loggers‘: False, ‘formatters‘: { ‘standard‘: { ‘format‘: standard_format }, ‘simple‘: { ‘format‘: simple_format }, }, ‘filters‘: {}, ‘handlers‘: { #打印到終端的日誌 ‘ch‘: { ‘level‘: ‘DEBUG‘, ‘class‘: ‘logging.StreamHandler‘, # 打印到終端 ‘formatter‘: ‘simple‘ }, #打印到a1.log文件的日誌 ‘fh1‘: { ‘level‘: ‘DEBUG‘, ‘class‘: ‘logging.FileHandler‘, # 保存到文件 ‘formatter‘: ‘standard‘, ‘filename‘: fh1_path, # 日誌文件的路徑 ‘encoding‘: ‘utf-8‘, # 日誌文件的編碼,再也不用擔心中文log亂碼了 }, # 打印到a2.log文件的日誌 ‘fh2‘: { ‘level‘: ‘DEBUG‘, ‘class‘: ‘logging.FileHandler‘, # 保存到文件 ‘formatter‘: ‘simple‘, ‘filename‘: fh2_path, # 日誌文件的路徑 ‘encoding‘: ‘utf-8‘, # 日誌文件的編碼,再也不用擔心中文log亂碼了 }, }, ‘loggers‘: { ‘‘: { ‘handlers‘: [‘fh1‘, ‘fh2‘, ‘ch‘], ‘level‘: ‘DEBUG‘, }, }, }
logging.config.dictConfig(settings.LOGGING_DIC) logger1=logging.getLogger(‘用戶交易‘) #logger1-> fh1,fh2,ch logger1.info(‘復古風剛剛興起‘) logger2=logging.getLogger(‘用戶權限‘) #logger2-> fh1,fh2,ch logger2.error(‘TOm沒有執行權限‘)調用log配置字典
常用模塊——日誌模塊