今回は、ログファイル名を日付にする方法について説明します。
環境
Python 3.9.1
VSCode1.52.1
日付のフォーマット
はじめに、現在日付を文字列に変換する方法について説明をします。
Python コードの中で日付を扱うには datetime モジュールをインポートします。
次に、現在日時を取得するためには、now() メソッドを実行します。
コード例は以下の通りです。
現在日時の取得例
from datetime import datetime print(datetime.now()) # 出力例:2021-01-02 17:18:25.178307
続いて、現在日時から年、月、日を取得して文字列に変換する例を以下に示します。
datetime が 持つ now 関数で現在日時を取得した後、%Y、%m、%d を使用して現在の年月日を文字列にしています。%Y は西暦の年を4桁で、%m は月を2桁で、%d は日を2桁で表します。
現在日時から年月日を取得する例
print('{:%Y-%m-%d}'.format(datetime.now())) # 出力令例:2021-01-02
FileHandler の作成
それでは本題に入りましょう。
ログファイル名を日付にするには、logging のFileHandler と 先ほどの datetime を使用します。
コード例を以下に示します。
ログファイル名を日付にして出力する例
import logging import logging.handlers from datetime import datetime # ロガーを取得 log = logging.getLogger(__name__) # ログ出力レベルの設定 log.setLevel(logging.DEBUG) # FileHandler の作成 fh = logging.FileHandler('{:%Y-%m-%d}.log'.format(datetime.now())) # ロガーに追加 log.addHandler(fh) # ログの出力 log.debug('===== start =====') log.debug('debug:{}'.format(str(num))) log.debug('===== end =====')
6行目は、getLogger メソッドを使用して、ロガーを取得しています。__name__ というのは、このロガーを使用しているモジュール自身の名前を表ます。
8行目は、作成したロガーで使用するログの出力レベルを設定しています。ここでは DEBUG にしています。
11行目が、実際にFileHandlerを使用して、ログのファイル名を作成しています。前述したように
%Y は西暦の年を4桁で、%m は月を2桁で、%d は日を2桁で表しますので、YYYY-MM-DD.log というログファイル名になります。
13行目は、11行目で作成した FileHandler をロガーに追加しています。
16〜20行目がログの出力です。ログが出力されるときに、現在日時のログファイルが作成されます。
実行例を以下に示します。
コメント