pythonlogging檔案配置示例

fjie發表於2017-05-18

python logging模組用來列印日誌,類似於Java的log4j,下面列出logging模組檔案配置示例程式碼
配置檔案“logging.conf”

# logging.conf

[loggers] # 列印物件, keys指定不同物件的呼叫時的名稱
keys=root, debug, info, error, file

[logger_root]
level=DEBUG # 指定級別, 錯誤、除錯、資訊等
handlers=debughandler, infohandler, errorhandler, filehandler

[logger_debug]
handlers=debughandler
qualname=debug
propagate=0

[logger_info]
handlers=infohandler
qualname=info
propagate=0

[logger_error]
handlers=errorhandler
qualname=error
propagate=0

[logger_file] # 同時輸出到檔案與控制檯的日誌物件
handlers=debughandler, filehandler
qualname=debug
propagate=0

###############################################
[handlers] # handler用於指定日誌輸出位置, 可以使控制檯、檔案等
keys=debughandler, infohandler, errorhandler, filehandler

[handler_debughandler]
class=StreamHandler
level=DEBUG
formatter=form01
args=(sys.stdout,) # 輸出到控制檯

[handler_infohandler]
class=StreamHandler
level=INFO
formatter=form01
args=(sys.stdout,)

[handler_errorhandler]
class=FileHandler
level=ERROR
formatter=form02
args=(`logging.log`, `a`) # 輸出到檔案,追加模式,每次不重寫檔案

[handler_filehandler]
class=FileHandler
level=DEBUG
formatter=form02 # 選擇輸出格式化物件
args=(`logging.log`, `w`) # 輸出到檔案,每次重寫檔案

###############################################
[formatters] # 指定輸出格式,可以設定多種格式,每種輸出位置選定不同輸出格式
keys=form01, form02

[formatter_form01] # 格式: 時間 檔名 程式碼行數 輸出級別 - 輸出資訊
format=%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S

[formatter_form02]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S

上述“logging.conf”檔案與程式碼檔案處於同級目錄

示例程式碼

#! /usr/bin/env python
# -*- coding: utf-8 -*-

"""
@time: 2017/5/12 9:52
@description: TODO
"""

import logging
from logging.config import fileConfig

fileConfig(`logging.conf`)
logger = logging.getLogger(`file`) # 同時輸出到檔案與控制檯
# logger = logging.getLogger(`debug`) # 輸出到控制檯

logger.debug(`test`)


相關文章