天天看點

logging子產品配置筆記

log檔案的路徑

#判斷在目前的目錄下是否有一個logs檔案夾。沒有則建立

log_dir = os.path.dirname(os.path.dirname(__file__))+'/logs'
if not os.path.exists(log_dir):

    os.mkdir(log_dir)
           

設定log檔案名

#在上述的檔案夾生成web.log檔案
log_path = os.path.join(log_dir, 'web.log')
           

dictConfig通用參數配置

version版本号
'version': 1.0#固定值1.0
           
formatters日志格式設定
 'format': formatter的格式,字元串,比如'%(levelname)s-%(message)s'

 'datefmt': 日期的輸出格式,字元串,比如'%Y-%m-%d %H:%M:%S'
           

然後看下面一個配置

'formatters': {

        'detail': {#detail自定義一個格式名字

            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',

            'datefmt': "%Y-%m-%d %H:%M:%S"

        },

        'simple': {#同detail自定義一個格式名字,這裡定義另一種格式

            'format': '%(name)s - %(levelname)s - %(message)s',

        },

    }
           
handlers日志格式設定
    'handlers': {

        'console': {#console是自定義的handlers名字

            'class': 'logging.StreamHandler',#構造handler使用的類,字元串,必須使用全路徑

            'level': 'INFO',#級别

            'formatter': 'detail'#上面的detail格式

        },

        'file': {#file是自定義的handlers名字

            'class': 'logging.handlers.RotatingFileHandler',

            'maxBytes': 1024 * 1024 * 5,#每個日志檔案最大5M,超過之後重新命名一個檔案

            'backupCount': 10,#最多備份10個日志檔案,

            'filename': log_path,#上面定義的log檔案名

            'level': 'INFO',

            'formatter': 'detail',

            'encoding': 'utf-8',

        },
           
loggers

必須指定一個級别和handlers清單

    'loggers': {

        'crawler': {#crawler是自定義的日志對象名字

            'handlers': ['console', 'file'],#輸出方式

            'level': 'DEBUG',#級别

        },

        'parser': {

            'handlers': ['file'],#輸出方式

            'level': 'INFO',#級别

        }

    }
           

以上日志配置綜合

log_config = {

    'version': 1.0,

    'formatters': {

        'detail': {

            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',

            'datefmt': "%Y-%m-%d %H:%M:%S"

        },

        'simple': {

            'format': '%(name)s - %(levelname)s - %(message)s',

        },

    },

    'handlers': {

        'console': {

            'class': 'logging.StreamHandler',

            'level': 'INFO',

            'formatter': 'detail'

        },

        'file': {

            'class': 'logging.handlers.RotatingFileHandler',

            'maxBytes': 1024 * 1024 * 5,

            'backupCount': 10,

            'filename': log_path,

            'level': 'INFO',

            'formatter': 'detail',

            'encoding': 'utf-8',

        },

    },

    'loggers': {

        'crawler': {

            'handlers': ['console', 'file'],

            'level': 'DEBUG',

        },

        'parser': {

            'handlers': ['file'],

            'level': 'INFO',

        }

    }

}
           

建立日志對象使用

1.通過調用dictConfig(config)方法進行配置,config對象為一個dict

log_conf.dictConfig(log_config)
           

2.生成不同的日志對象

crawler = logging.getLogger('crawler')
parser = logging.getLogger('parser')
           

3.列印不同級别的log

常用的兩種

crawler.error(錯誤資訊)
crawler.info(字元串)
           

繼續閱讀