0

動的文字列をフォーマッタに追加しようとしていますが、追加できません。

これがコードです。

import logging

logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('spam.log')

var = 'some vaue'
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s %s' % var)
fh.setFormatter(formatter)
logger.addHandler(fh)
logger.error('error message')

出力:

Traceback (most recent call last):
  File "try.py", line 8, in <module>
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s %s' % var)
TypeError: format requires a mapping

ここ

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s %s' % var)

がエラーの原因です。この形式に可変変数を追加する必要があります。

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s simple_example')

正常に動作します。

4

1 に答える 1