はじめに

pythonのlog出力について検索すると、「コレはするな」「アレはダメだ」と講釈を垂れている記事が散見され、なにが正しいのか分からず混乱し、「そんなこと言われてもどうすりゃいいのさ (AA略」となってしまった方が数多くいると思う。
かく言う私もその一人でして。
私のようなコピペプログラマからすると「ゴチャゴチャ文句言うくらいならコピペで使えるコードを寄越せ!」と言いたくなる。

そんな私が適当に作ったloggerを公開してみようと思う。
本音:現場変わったときにコピペして使いまわそう

断っておくが私は細かいことはサッパリ理解していない
しかし、これで不便を感じた事もない。

logger

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

import logging
import logging.handlers

class logger:
    def __init__(self, name=__name__):
        self.logger = logging.getLogger(name)
        self.logger.setLevel(logging.DEBUG)
        formatter = logging.Formatter("[%(asctime)s] [%(process)d] [%(name)s] [%(levelname)s] %(message)s")

        # stdout
        handler = logging.StreamHandler()
        handler.setLevel(logging.DEBUG)
        handler.setFormatter(formatter)
        self.logger.addHandler(handler)

        # fileout
        handler = logging.handlers.RotatingFileHandler(filename = 'your_log_path.log'
                                                      ,maxBytes = 1048576
                                                      ,backupCount = 3)
        handler.setLevel(logging.DEBUG)
        handler.setFormatter(formatter)
        self.logger.addHandler(handler)

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

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

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

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

    def critical(self, msg):
        self.logger.critical(msg)

標準出力(stdout)

>>> import logger
>>> log = logger.logger('hoge')
>>>
>>> log.debug('test debug')
[2018-02-14 09:54:58,290] [6705] [hoge] [DEBUG] test debug
>>>
>>> log.info('test info')
[2018-02-14 09:55:19,130] [6705] [hoge] [INFO] test info
>>>
>>> log.error('test error')
[2018-02-14 09:55:31,340] [6705] [hoge] [ERROR] test error
>>>
>>> log.warn('test warn')
[2018-02-14 09:55:42,635] [6705] [hoge] [WARNING] test warn
>>>
>>> log.critical('test critical')
[2018-02-14 09:55:57,845] [6705] [hoge] [CRITICAL] test critical
>>>

ファイル出力(fileout)

xxx@xxxxx:~$ cat log.log
[2018-02-14 09:54:58,290] [6705] [hoge] [DEBUG] test debug
[2018-02-14 09:55:19,130] [6705] [hoge] [INFO] test info
[2018-02-14 09:55:31,340] [6705] [hoge] [ERROR] test error
[2018-02-14 09:55:42,635] [6705] [hoge] [WARNING] test warn
[2018-02-14 09:55:57,845] [6705] [hoge] [CRITICAL] test critical

最後に

私は細かいことはサッパリ理解していない。(重要)
ツッコミ、改善、大歓迎です。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.