オープニングとloggerの適切な使い方
- author:
sion908
- date:
2026/05/15
- event:
5月15 NaITE LT会
アジェンダ
このプレゼンの概要です
おまえだれよ
会の目的
LT: loggerの話 - info, warning, errorの適切な使い分け - printとの違い - 実務レベルでの出力先の違い
まとめ
お前誰よ
紫苑 (徳久泰河)
Sion908 (ついった, GitHub, etc) [1]
生息地(長崎, ぐんまー)
長崎大学大学院工学研究科電気電子工学 修了
株式会社デザイニウム
webアプリケーション, 3DCG, 写真
高校教員免許(数学、工業)
NaITE, UE長崎, JAWS-UG長崎
株式会社デザイニウム
福島県会津若松市
MaaS,地域通貨を含む、都市OSの一端や、除雪クラウドなどのDX化などを行う
東京の拠点では、ARやXRも行っている
NaITE (長崎IT技術者会)
長崎になんらかの縁や関わり、興味があるIT技術者を中心とした技術コミュニティ
ソフトウェア品質技術やソフトウェア開発技術の話題を中心に活動
勉強会, もくもく会, QDG(Software Quality and Development Gathering), ToCセミナー
次回イベント: 2026.06.26(金) LT会 in リコーITソリューションズ
UE長崎
Unreal Engineと3D表現に興味を持つ人たちの長崎発クリエイティブ・コミュニティ
「島を繋ぎ、長崎を一つのクリエイティブ・ギルドへ」
UEやメタバースの技術を使って、長崎の島々をつなぐ
Webサイト: https://ue-ngs.sion908.tech
次回イベント: 2026.06.14(土) もくもく会 in coto
JAWS-UG 長崎
Amazon Web Services(AWS)のユーザーグループ
AWSに興味がある方、初心者からエキスパートまで幅広い層が集まるコミュニティ
基礎的な内容から実践的な活用まで、参加者同士で知見を共有
Discordサーバーで継続的な交流
次回イベント: 2026/06/13(土) AWS BuilderCards 体験会 in CO-DEJIMA
会の目的
この勉強会の目的
知識の共有の場
お互いの経験から学ぶ
AI時代でも「人間の知識」の価値を再確認
次回のテーマについて意見を聞きたい
X(Twitter)でシェアしてね!
スキャンして投稿!
LT: loggerの話
info, warning, error 適切に使えてるか?
ログレベルの使い分け
import logging
logger = logging.getLogger(__name__)
logger.debug("デバッグ情報") # 開発時のみ
logger.info("正常な処理") # 通常の動作記録
logger.warning("警告") # 将来問題になりうる
logger.error("エラー") # 重大だが処理継続
logger.critical("致命的エラー") # プログラム続行不能
よくある間違い
すべて print() で済ませてる
エラー時だけログ出力してる
debugレベルを本番で出力してる
ログにコンテキストが足りない
「なんか動かない」→ログがない
「いつエラーが起きた?」→タイムスタンプがない
「どのユーザー?」→ユーザーIDがない
Pythonのprintとの違い
printの問題点
標準出力に固定
レベル管理がない
フォーマットが自由すぎる
本番環境での制御が困難
ログローテーション未対応
loggerのメリット
出力先を柔軟に設定可能
レベル別の出力制御
構造化されたフォーマット
ファイル、Syslog、クラウドなどに対応
ログローテーション自動化
実務での違い
# print: ただ出力するだけ
print("ユーザー作成: tanaka")
# logger: 構造化された情報
logger.info(
"ユーザー作成完了",
extra={
"user_id": "12345",
"username": "tanaka",
"ip": "192.168.1.1"
}
)
実務レベルでの出力先の違い
開発環境
コンソール出力(StreamHandler)
DEBUGレベルまで表示
色付きで見やすく
本番環境
ファイル出力(FileHandler, RotatingFileHandler)
INFOレベル以上
JSONフォーマットで解析容易
ログ集約サービスへ転送(Fluentd, CloudWatchなど)
設定例
# サイズベースのローテーション
from logging.handlers import RotatingFileHandler
handler = RotatingFileHandler(
'app.log',
maxBytes=10*1024*1024, # 10MBでローテーション
backupCount=5 # 5世代分保持
)
# 時間ベースのローテーション
from logging.handlers import TimedRotatingFileHandler
handler = TimedRotatingFileHandler(
'app.log',
when='midnight', # 毎日深夜にローテーション
backupCount=30 # 30日分保持
)
ログ集約の重要性
複数サーバーのログを一箇所で管理
エラー検知とアラート
トラブルシューティングの効率化
ユーザー行動の分析
まとめ
会の目的
AI時代でも知識は重要
AIの回答を判別する能力が必要
勉強会を知識共有の場として活用
loggerのまとめ
printではなくloggerを使おう
ログレベルを適切に使い分けよう
実務では出力先とフォーマットを意識しよう
ログは「未来の自分」へのメッセージ
さいごに
次回のテーマについて、皆さんの意見をお聞かせください。
React/Vue/Angularの深掘り?
データ分析の実践?
セキュリティ基礎?
その他、興味のある分野?
よろしくお願いします!