【Python】ログの書き方基本

はじめに
最近の業務で自分の作ったAPI模擬プログラムにログを追加している。
そこで、この記事では、ビンゴゲームを例に、loggingモジュールを使用したPythonのログの書き方の基本に触れよう。
使用するビンゴゲーム
Gitのリポジトリ。
https://github.com/ki-hi-ro/bingo/commits/master/
解説記事。
from-zero.pyにログを追加していこう。


最初の一歩 ーinfoログをファイル出力するー
まずはここから。
一歩ずつ進めていこう。
自分の仮説だけで実装できるプログラムを増やす。
空想をプログラムにすることができれば、最強のWEBエンジニアとして活躍していける。
思考をプログラムに落とし込むことができるからだ。
ブログを書くように、プログラムを創造していきたい。
import random
def main():
logging.info("ビンゴゲームを開始します。")
上記で、どこにもログが出力されなかった。
なるべく、自分の頭だけで考える。
自分の感覚を信じて。
ライブラリのモジュールを確認する。これで使用できれば、他のモジュールにも応用可能なスキルが身に付く。

__init__.pyにLoggerクラスがあった。
my_logというインスタンスを生成して、infoメソッドを使用したが、ソースを実行してもログが表示されなかった。
def main():
my_log = logging.Logger('BINGOログ')
my_log.info("ビンゴゲームを開始します。")
この辺で、自分の足を使って目的地に行くのは、非効率だからやめておこう。
電車を使う。

import logging
def main():
logging.basicConfig(level=logging.INFO)
logging.info("ビンゴゲームを開始します。")
これで、INFOレベルのログが出力された。

rootというのが気になる。
これは、名前を指定せずに使用した場合の名前。
以下のようにすれば、rootを消せる。
logging.basicConfig(level=logging.INFO, format="%(levelname)s:%(message)s")

ファイル出力するには、どうすればいいか?
basicConfigにfilenameを追加してあげる。

そうすると、ファイルに生成された。

ここまで、見出しに書いた「infoログをファイル出力」に必要なことをステップ by ステップで進めてきた。
重要だと感じたのは「問い」。
明日以降の業務でも成果物のあるべき姿に向けた小さな問いを連発して、それに応える形で進めていこう。
チームワークが重要な場面では、チームメイトに適切な問いを投げかける。
今後の自分の活躍が楽しみだ。
日時を出す
format引数を変更して、ログに日時を出していこう。
以下の赤字部分を追加した。
logging.basicConfig(
filename="bingo.log",
level=logging.INFO,
format="%(asctime)s %(levelname)s:%(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
logging.info("ビンゴゲームを開始します。")
asctimeは、ASCII time(アスキータイム)の略で、ログが記録された時刻をASCII文字列として表現するフィールド。
ASCIIは、American Stadard Code for Information Interchangeの略。
コンピュータ初期に使われた英数字・記号を中心とした文字コード。
%(asctime)sのsは、string(文字列)の意味。
「ここに、ASCII timeの文字列を埋め込みますよ」ということになる。
出力結果。
2025-09-27 14:14:33 INFO:ビンゴゲームを開始します。
コメントを残す