Python学習【365日チャレンジ!】124日目のマスターU(@Udemy11)です。
今日は、初めてホームベーカリーを使って、クロワッサンを焼いてみました。
ホームベーカリーは生地をこねるだけなので、食パンと違って、さらにひと手間ふた手間かかります。
生地を広げてパターをたっぷり100gほど使って、パターを塗りながら生地を重ねていくのですが、バターがもったいないので、30gくらいしか使いませんでした。
そしたら、案の定、焼き上がりはあんまりバターの風味がありませんでした。
ま〜、クロワッサン自体は美味しかったので問題なかったのですが、お店で売られているクロワッサンってかなりバターが使われてるんだなってことがわかった一日でした。
それでは今日も、Python学習をはじめていきましょう!
昨日の復習
昨日は、ログを記録するロギングについて学習しました。
必要な時に必要なログを出力させるには、ロギングを使ってコードを書く必要がありました。
Pythonで扱うログのレベルはCRITICAL
、ERROR
、WARNING
、INFO
、DEBUG
の5種類で、デフォルトで出力できるのがCRITICAL
、ERROR
、WARNING
の3つでした。
INFO
、DEBUG
のログを出力するには、basicConfig
の引数level
を指定する必要がありました。
その他、ロギングの基本については、昨日の記事をごらんください。
本日の学習内容は、ロギングのフォーマッタです。
ロギングのフォーマッタ
logging
を使ってログを記録する時に、デフォルトで出力されるフォーマットがあります。
WARNING:root:message
例えばWARNING
の出力は上記のように、WARNING:root:
のあとに、指定したメッセージが入ります。
この出力フォーマットを変更できるのが、フォーマッタです。
import logging
formatter = '%(levelname)s:%(message)s'
logging.basicConfig(level=logging.DEBUG, format=formatter)
logging.debug('デバッグ')
出力結果
DEBUG:デバッグ
basicConfig
の引数format
に%()s
形式の値を代入した変数formatter
を指定することで、出力するログを変更することができます。
ロギングでは、何かのログを記録するたびにLogRecord
インスタンスが勝手に生成されますが、3行目で、そのLogRecord
の属性であるlevelname
とmessage
を%()s
形式で指定しています。
出力可能な属性
levelname
やmessage
以外にもLogRecord
インスタンスの属性はいろいろと用意されています。
こちらは、Python公式ドキュメントからその一部を抜粋したものですが、使用頻度が高いものといえばやはり、現在時刻を取得する%(asctime)s
でしょう。
import logging
formatter = '%(asctime)s:%(levelname)s:%(message)s'
logging.basicConfig(level=logging.INFO, format=formatter)
logging.info('ただのインフォメーションです')
出力結果
2020-06-13 17:52:15,282:INFO:ただのインフォメーションです
いつ問題が発生しているのかを確認するためには、ログに日時を入れる必要がありますし、その他の属性情報もしっかりとログに残しておく必要があります。
かなり地味だけど重要
ログを記録するというと、自動的に記録されているというイメージがあります。
自動的に記録されるのには間違いありませんが、どんなログを残すかはプログラマーが決めているわけです。
ログは、通常に作動していれば、表に出ることはありませんが、たよりになる裏方というイメージで、なにか問題が起こったときには、きちんと原因究明ができるようなログを残しておく必要があります。
コード中のどの部分でどんなログを残すかというのは、プログラマーのセンスが問われるところです。
ロギングはかなり地味なコードですが、非常に重要なので、しっかりと理解するようにしましょう!
それでは、明日もGood Python!
Udemyで超おすすめのPython講座はこちら!