Python Logger使用


1. 單文件的logging配置

import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='znifeng.log',
filemode='w')

 

2. 項目的logger配置(一個logger配置多個handler以實現輸出不同級別的日志到不同文件)

#!/usr/bin/python
# -*- coding: utf-8 -*
__author__ = 'zni.feng'
import os
# mac 上logging的源碼路徑 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging
import logging
import logging.handlers

class Logger:
    def __init__(self, name="root"):
        self._logger = logging.getLogger(name)
        #def __init__(self, fmt=None, datefmt=None)
        formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] - %(filename)s(line:%(lineno)d) - %(message)s', '%Y-%m-%d %H:%M:%S')

        #class logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False)
        handler_info = logging.handlers.TimedRotatingFileHandler('logs/info.log', when='D', interval=1)
        handler_warn = logging.handlers.TimedRotatingFileHandler('logs/warn.log', when='D', interval=1)

        handler_info.setFormatter(formatter)
        handler_warn.setFormatter(formatter)

        #當handler的log level高於logger本身的log level時,此設置才會生效
        handler_info.setLevel(logging.INFO)
        handler_warn.setLevel(logging.WARN)

        self._logger.addHandler(handler_info)
        self._logger.addHandler(handler_warn)

        #默認情況下,logger本身的log level是warn,為了讓info handler的level等級生效,所以調低logger本身的level
        self._logger.setLevel(logging.INFO)
        
    def getLogger(self):
        return self._logger

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM