これは重複している可能性がありますが、 Pythonロギング知識の小さなビット。
ロガーを通過させないでください。あなたはいつでも任意のロガーにlogging.getLogger(<log name as string>)
でアクセスすることができます。デフォルトでは、フラスコはFlask
クラスに指定した名前を使用します。
メインモジュールの名前が「my_tool」の場合は、モジュールでlogger = logging.getLogger('my_tool')
とします。
これを追加するには、私のロガーとパッケージの名前を明示したいので、Flask('my_tool')
**とし、他のモジュールでは、サブレベルのロガーが好きです。 logger = logging.getLogger('my_tool.services')
はすべて同じルートロガー(およびハンドラー)を使用します。
*他の回答に基づく経験はありません。
**再び、フラスコを使用していない、DKそれは良い習慣である場合
編集:スーパー簡単な愚かな例
メインフラスコアプリ
import sys
import logging
import flask
from module2 import hi
app = flask.Flask('tester')
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
app.logger.addHandler(handler)
app.logger.setLevel(logging.DEBUG)
@app.route("/index")
def index():
app.logger.debug("TESTING!")
hi()
return "hi"
if __name__ == '__main__':
app.run()
モジュール2
import logging
log = logging.getLogger('tester.sub')
def hi():
log.warning('warning test')
出力
127.0.0.1 - - [04/Oct/2016 20:08:29] "GET /index HTTP/1.1" 200 -
2016-10-04 20:08:29,098 - tester - DEBUG - TESTING!
2016-10-04 20:08:29,098 - tester.sub - WARNING - warning test
編集2:ちょうど一般的な知識のために、サブ・ログ
完全に不要ないじり。
子ロガーを定義すると、.something
をルートロガー名の後にlogging.getLogger('root.something')
に追加することで、基本的に別の名前空間を使用できます。
私はそれを使ってログ機能をグループ化するのが個人的に好きです。したがって、ログの種類を知るには、.tool
または.db
が必要です。しかし、これらの子ロガーには独自のハンドラーを持たせることもできます。したがって、コードの一部をstderr
またはログにのみ印刷する場合は、そうすることができます。以下は変更されたmodule2
の例です。
モジュール2
import logging
import sys
log = logging.getLogger('tester.sub')
handler = logging.StreamHandler(sys.stderr)
handler.setFormatter(logging.Formatter('%(name)s - %(levelname)s - %(message)s'))
log.addHandler(handler)
log.setLevel(logging.INFO)
def hi():
log.warning("test")
出力
127.0.0.1 - - [04/Oct/2016 20:23:18] "GET /index HTTP/1.1" 200 -
2016-10-04 20:23:18,354 - tester - DEBUG - TESTING!
tester.sub - WARNING - test
2016-10-04 20:23:18,354 - tester.sub - WARNING - test
の
可能重複http://stackoverflow.com/questions/22944387/configure-module-logger-to-flask-app-logger – CasualDemon
私はその質問を見ましたが、答えは非常に貧しく、私には意味がありません。 – user4184113