0
私はいくつかのロギングを行うユーティリティメソッドを持っています。ロギングで "funcName"を上書きする
ユーティリティメソッドの名前ではなく、ログに呼び出しメソッド名が表示されます。
私はこれを試しました(後で、呼び出し側からinspectモジュールを介して "bar"を取得したい)。
def helper(...):
logger.info('foo', extra=dict(funcName='bar'))
しかし、これは動作しません。(私は「余分」を渡すしようとしていない場合)ここで
File "/usr/lib/python2.7/logging/__init__.py", line 1167, in info
self._log(INFO, msg, args, **kwargs)
File "/usr/lib/python2.7/logging/__init__.py", line 1285, in _log
record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra)
File "/usr/lib/python2.7/logging/__init__.py", line 1263, in makeRecord
raise KeyError("Attempt to overwrite %r in LogRecord" % key)
KeyError: "Attempt to overwrite 'funcName' in LogRecord"
が出力されます。
2017-01-30 15:00:24 loghelper.helper
私はしたいと思います発信者を参照してください:
2017-01-30 15:00:24 calling_module.calling_method
e?
更新
メソッド名やその他のデータはログフォーマッタを介して出力されます:
logging.Formatter('%(asctime)s %(name)s.%(funcName)s +%(lineno)s: %(levelname)-8s [%(process)d] %(message)s',
'%Y-%m-%d %H:%M:%S')
inspectでメソッド名を取得する方法を調べていただきありがとうございます。問題は、ログ出力にこの名前を付けることです(印刷ではなくログを使用して)。 – guettli
ロギングfuncのスニペットを表示できますか?またはinbuiltモジュールを使用していますか? – harshil9968
func-nameはロギングFormater(私たちのコードではありません)経由で出力されます。私は質問を更新しました。私はそれ以上のログ機能のスニペットを表示する意味がないと思う。どう思いますか? – guettli