PythonのLogger

pythonのLoggerメモです。

PythonのLoggerについて

それぞれのモジュールはこのように書く (基本)

それぞれのファイルでloggerを生成し、loggerでhandlerやLevelを設定する

from logging import getLogger,StreamHandler,DEBUG
logger = getLogger(__name__)    #以降、このファイルでログが出たということがはっきりする。
handler = StreamHandler()
handler.setLevel(DEBUG)
logger.setLevel(DEBUG)
logger.addHandler(handler)

メインのファイルでbasicConfigをいじる

一番上の階層のファイル (main) でloggingをいじって、出力設定を一括で管理する

if __name__ == '__main__'
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s- %(name)s - %(levelname)s - %(message)s')
    logging.debug('this is debug message')
    logging.info('this is info message')
    logging.warning('this is warning message')
    logging.error('this is error message')
    logging.critical('this is critical message')

参考

mylogger (例)

import logging
import logging.handlers


def set_logger(module_name):
    """ファイルごとに__name__でmodulenameを取得できる"""
    logger = logging.getLogger(module_name)
    logger.handlers.clear()

    streamHandler = logging.StreamHandler()
    # fileHandler = logging.handlers.RotatingFileHandler(
    #     "./test.log", maxBytes=10000, backupCount=5
    # )

    formatter = logging.Formatter(
        "%(asctime)s [%(levelname)s] (%(filename)s | %(funcName)s) %(message)s"
    )

    streamHandler.setFormatter(formatter)
    # fileHandler.setFormatter(formatter)

    logger.setLevel(logging.DEBUG)
    streamHandler.setLevel(logging.INFO)
    # fileHandler.setLevel(logging.DEBUG)

    logger.addHandler(streamHandler)
    # logger.addHandler(fileHandler)
    # logger.addHandler(emailHandler)

    return logger

comments powered by Disqus