Python的log的使用

用法

self.logger = Logger('agent') # agent是应用名
self.logger.add_file_handler('agent') # 生成agent.log文件
try:
    self.logger.info('rollback block: %s | %s' % (str(db_block['height']), str(db_block['hash'])))
except Exception as e:
    self.logger.error('error: %s\nblock:\n%s\n' % (str(e), str(node_block)))
    raise Exception('error: %s', e)

一个封装好的Log类

import logging
import os
from logging.handlers import RotatingFileHandler


class Logger:
    def __init__(self, app):
        self.logger = logging.getLogger(app)
        self.logger.setLevel(logging.DEBUG)
        self.fmt = logging.Formatter(
            '%(asctime)s %(levelname)s <%(name)s>: %(message)s '
            '[in %(pathname)s:%(lineno)d]')
        self.app = app

    def add_stream_handler(self, clevel = logging.DEBUG):
        sh = logging.StreamHandler()
        sh.setLevel(clevel)
        sh.setFormatter(self.fmt)
        self.logger.addHandler(sh)

    def add_file_handler(self, file_name=None, flevel=logging.DEBUG):
        file_name = self.app if file_name is None else file_name
        if not os.path.exists('./logs/'):
            os.mkdir('./logs/')
        log_path = os.path.join('./logs', '%s.log' % file_name)
        fh = RotatingFileHandler(log_path, maxBytes=100000, backupCount=10)
        fh.setLevel(flevel)
        fh.setFormatter(self.fmt)
        self.logger.addHandler(fh)

    def debug(self, message):
        self.logger.debug(message)

    def info(self, message):
        self.logger.info(message)

    def warn(self, message):
        self.logger.warn(message)

    def error(self, message):
        self.logger.error(message)

    def cri(self, message):
        self.logger.critical(message)


if __name__ == '__main__':
    logyyx = Logger('test')
    logyyx.add_stream_handler()
    logyyx.add_file_handler('my_log_name')
    logyyx.debug('a bug message')
    logyyx.info('an info message')
    logyyx.warn('a warning message')
    logyyx.error('a error message')
    logyyx.cri('a critical message')

终端输出:

2018-05-18 13:16:41,756 DEBUG : a bug message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:32]
2018-05-18 13:16:41,756 INFO : an info message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:35]
2018-05-18 13:16:41,756 WARNING : a warning message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:38]
2018-05-18 13:16:41,756 ERROR : a error message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:41]
2018-05-18 13:16:41,756 CRITICAL : a critical message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:44]

在./logs目录下生成log文件 my_log_name.log m y _ l o g _ n a m e . l o g

2018-05-18 13:16:41,756 DEBUG : a bug message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:32]
2018-05-18 13:16:41,756 INFO : an info message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:35]
2018-05-18 13:16:41,756 WARNING : a warning message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:38]
2018-05-18 13:16:41,756 ERROR : a error message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:41]
2018-05-18 13:16:41,756 CRITICAL : a critical message [in C:/Users/doubl/btmscan_log/btmscan/collector/agent/log.py:44]

参数配置说明

你可能感兴趣的:(python,2018,python,2018)