Python で logging の出力を標準出力にする2023年03月08日 11時21分09秒

時おり、logging でどう出力されるのか実験したくなる事がある。そんな時に一番便利な方法は、logging.basicConfig を使って、logging に標準出力に出すようにすると楽。
% python
Python 3.8.16 (default, Dec  7 2022, 12:21:17) 
>>> import logging
>>> import sys
>>> logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
>>> logging.debug("123")
DEBUG:root:123
>>> logging.debug("123", "456")
--- Logging error ---
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/logging/__init__.py", line 1084, in emit
    msg = self.format(record)
  File "/usr/local/lib/python3.8/logging/__init__.py", line 928, in format
    return fmt.format(record)
  File "/usr/local/lib/python3.8/logging/__init__.py", line 663, in format
    record.message = record.getMessage()
  File "/usr/local/lib/python3.8/logging/__init__.py", line 368, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "<stdin>", line 1, in <module>
Message: '123'
Arguments: ('456',)
logging に複数の引数を渡すと、print とは違ってエラーになるようだ。