1. 程式人生 > >常用模塊——日誌模塊

常用模塊——日誌模塊

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配置字典

常用模塊——日誌模塊