今回は、ログファイル名を日付にする方法について説明します。
環境
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行目がログの出力です。ログが出力されるときに、現在日時のログファイルが作成されます。
実行例を以下に示します。


コメント