Python logging ライブラリ完全ガイド
Python 標準ライブラリの logging は、アプリケーションのログを記録・管理するためのツールを提供します。本記事では、logging の主要な機能とその活用方法について詳しく解説します。
1. logging ライブラリの概要
loggingは、Python 標準のログ記録ライブラリです。- デバッグ、情報、警告、エラー、重大なエラーなど、異なるレベルのログを記録できます。
- ファイルへの出力、コンソール出力、リモート送信など、柔軟なログ管理が可能です。
インストール方法
logging は Python の標準ライブラリなので、追加のインストールは不要です。
import logging
import logging
logging.basicConfig(level=logging.INFO)
logging.info("これは情報ログです。")
import logging
logging.basicConfig(
format='%(asctime)s - %(levelname)s - %(message)s',
level=logging.DEBUG
)
logging.debug("デバッグメッセージ")
logging.info("情報メッセージ")
import logging
logging.basicConfig(
filename='app.log',
format='%(asctime)s - %(levelname)s - %(message)s',
level=logging.WARNING
)
logging.warning("これは警告ログです。")
import logging
try:
1 / 0
except ZeroDivisionError:
logging.exception("ゼロ除算エラーが発生しました!")
import logging
logger = logging.getLogger("my_logger")
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.debug("デバッグメッセージ")
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("デバッグメッセージ")
logging.info("情報メッセージ")
logging.warning("警告メッセージ")
logging.error("エラーメッセージ")
logging.critical("重大なエラーメッセージ")
import logging
from logging.handlers import RotatingFileHandler
handler = RotatingFileHandler("app.log", maxBytes=1000, backupCount=3)
logger = logging.getLogger("my_logger")
logger.addHandler(handler)
logger.setLevel(logging.INFO)
for i in range(100):
logger.info(f"ログメッセージ {i}")
import logging
from logging.handlers import TimedRotatingFileHandler
handler = TimedRotatingFileHandler("timed_app.log", when="midnight", interval=1, backupCount=7)
logger = logging.getLogger("timed_logger")
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.info("このログは日付ごとに新しいファイルに保存されます。")
import logging
import json
class JSONFormatter(logging.Formatter):
def format(self, record):
log_record = {
"time": self.formatTime(record),
"level": record.levelname,
"message": record.getMessage()
}
return json.dumps(log_record)
logger = logging.getLogger("json_logger")
handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter())
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.info("JSON 形式のログメッセージ")
import logging
from logging.handlers import SMTPHandler
mail_handler = SMTPHandler(
mailhost=("smtp.example.com", 587),
fromaddr="noreply@example.com",
toaddrs=["admin@example.com"],
subject="アプリケーションエラー",
credentials=("user", "password"),
secure=()
)
logger = logging.getLogger("email_logger")
logger.addHandler(mail_handler)
logger.setLevel(logging.ERROR)
logger.error("重大なエラーが発生しました!")