Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@mui_nyan

Flask 1.1.x でlogging.getLoggerしようとしてハマった

More than 1 year has passed since last update.

結論

appインスタンスを触れないところでログ出力するときは、
app.loggerを一度でも参照してから、
logging.getLogger("app")でロガーを取得する。

メモ

基本はこのように、app.loggerでログ出力すればよい。

app.py
from flask import Flask

app = Flask(__name__)

app.logger.warning("This is warning message.")
# => [2020-02-21 14:35:09,642] WARNING in app: This is warning message.

これは普通に動く。
でも、main以外のソースからappを触りたくないので
logging.getLogger でロガーを取得する。
ググって出る記事を見て下のようにした。

index.py
import logging 

log = logging.getLogger("flask.app")
log.warning("This is warning message.")
# => This is warning message.

だめ。出力されるけどなにも整形されず、たんにprintしたのと同じ。

1.1.xのドキュメントを見ると仕様が変わっていた。
app.name と同じ名称でロガーが登録されるらしい。
メインのソースファイル名がapp.py、初期化をFlask(__name__)としているので
getLogger("app")で取れるはず。

index.py
import logging 

log = logging.getLogger("app")
log.warning("This is warning message.")
# => This is warning message.

何故かこれもだめ。出力が整形されなかった。

いろいろいじった結果、こうすれば動いた。

app.py
from flask import Flask

app = Flask(__name__)
app.logger.warning("適当に1回ログを出しておく")
index.py
import logging 

log = logging.getLogger("app")
log.warning("This is warning message.")
# => [2020-02-21 14:35:09,642] WARNING in index: This is warning message.
2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mui_nyan
https://twitter.com/mui_nyan

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?