pythonには便利なloggerが最初から入っているので、最初からprintじゃなくてこっちを使っておけば良いですね。
小規模なプログラムでも役立ちます。
- main.py
import logging
import logging.config
logging.config.fileConfig('./logging.conf')
mylog = logging.getLogger('mylog1')
mylog.debug('hello')
mylog.error('oh no!')
- logging.conf
[loggers]
keys=root,mylog1,mylog2
[handlers]
keys=default,file1,file2
[formatters]
keys=basic
[logger_root]
level=NOTSET
handlers=default
[logger_mylog1]
lebel=NOTSET
handlers=file1
qualname=mylog1
[logger_mylog2]
lebel=NOTSET
handlers=file2
qualname=mylog2
[handler_default]
class=StreamHandler
level=NOTSET
formatter=basic
args=(sys.stdout,)
[handler_file1]
class=FileHandler
level=NOTSET
formatter=basic
args=(“log1.log”,’a’)
[handler_file2]
class=FileHandler
level=NOTSET
formatter=basic
args=(“log2.log”,’a’)
[formatter_basic]
format=%(name)s: %(asctime)s %(levelname)s %(message)s
datefmt=%Y/%m/%d %H:%M:%S
class=logging.Formatter
confファイルに複数のlogger、handlerを指定することで、複数のファイルに書き込んだり、標準出力とファイルの両方に書き込んだり、エラーレベルでフィルタリングしたりできます。formatterを指定することで、日付を表示したりといった加工が簡単にできます。
便利ですね。