Day 134日付付きログを日単位でローテーション保存する
Pythonコード
1import datetime2import os3 4# ログファイルの保存先ディレクトリ5log_dir = 'logs'6 7# 保存先ディレクトリが存在しない場合は作成8if not os.path.exists(log_dir):9 os.makedirs(log_dir)10 11# 現在の日付を取得12now = datetime.datetime.now()13 14# ログファイル名を日付で命名15log_file_name = now.strftime('%Y-%m-%d') + '.log'16 17# ログファイルのフルパス18log_file_path = os.path.join(log_dir, log_file_name)19 20# ログメッセージを入力21while True:22 log_message = input('ログメッセージを入力してください("quit"で終了):')23 if log_message.lower() == 'quit':24 break25 26 # ログファイルに書き込む27 with open(log_file_path, 'a', encoding='utf-8') as f:28 f.write(now.strftime('%Y-%m-%d %H:%M:%S') + ': ' + log_message + '\n')
解説
- 行1〜2: datetimeとosモジュールをインポートします。datetimeは日付や時間を扱うために、osはファイルやディレクトリを操作するために使用します。datetimeモジュールのdatetime.now()関数は、現在の日付と時間を取得するために使用されます。osモジュールのpath.exists()関数は、指定されたパスが存在するかどうかを確認するために使用されます。
- 行4〜5: ログファイルを保存するディレクトリを指定します。ここでは「logs」という名前のディレクトリに保存します。
- 行7〜9: 保存先ディレクトリが存在しない場合は、os.makedirs()関数でディレクトリを作成します。os.makedirs()関数は、指定されたパスのディレクトリを作成します。
- 行11〜12: 現在の日付と時間を取得します。datetime.datetime.now()関数で現在の日付と時間を取得します。
- 行14〜15: ログファイルの名前を日付で命名します。strftime()関数で日付のフォーマットを指定します。'%Y-%m-%d'は、年-月-日というフォーマットを表します。
- 行17〜18: ログファイルのフルパスを取得します。os.path.join()関数でディレクトリとファイル名を結合します。
- 行20〜28: ログメッセージを入力します。input()関数でユーザーから入力を受け取ります。入力されたメッセージをログファイルに書き込みます。with open()関数でファイルを開き、f.write()関数でファイルに書き込みます。
次に試してみよう
- ログファイルの保存先ディレクトリを変更してみましょう。
- ログメッセージにユーザー名を追加してみましょう。
- ログファイルを読み込んで内容を表示してみましょう。