7

私はQtCore.QThread(からPyQt4)を使用しています。

ログに記録するには、次のフォーマッターも使用しています。

logging.Formatter('%(levelname)-8s %(asctime)s %(threadName)-15s %(message)s')

結果のログは次のとおりです。

DEBUG 2012-10-01 03:59:31,479 Dummy-3 my_message

私の問題は、ログを記録しているスレッドをより明確に知りたいというDummy-3ことです...私にとって最も明確な名前ではありません....

QtCore.QThreadログをより意味のあるものにするために、ログ モジュールで (LogRecord 属性として) 使用できる名前を設定する方法はありますか?

ありがとう !

4

2 に答える 2

5

スレッド モジュールが使用可能な場合、ロギング モジュールはLogRecord 属性threading.current_thread().nameの設定に使用します。threadName

しかし、ドキュメントthreading.current_threadは、現在のスレッドがスレッド化モジュールによって作成されていない場合、ダミーのスレッド オブジェクトが使用されると書かれています (したがって、"Dummy-x" という名前が付けられています)。

threading.current_thread名前をより適切なものにリセットするためにモンキーパッチを適用することは可能だと思います。extraしかし、メッセージをログに記録するときに辞書を利用する方がはるかに優れた方法であることは間違いありません。

logging.Formatter('%(levelname)-8s %(asctime)s %(qthreadname)-15s %(message)s')
...
extras = {'qthreadname': get_qthreadname()}
logging.warning(message, extra=extras)
于 2012-10-01T13:01:44.780 に答える