[Python] ログファイル名を日付にするには?

Python logging
Python
スポンサーリンク

今回は、ログファイル名を日付にする方法について説明します。

環境

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行目がログの出力です。ログが出力されるときに、現在日時のログファイルが作成されます。

実行例を以下に示します。

ログファイル名を日付で出力した例

ログファイル名を日付で出力した例

 

Please follow and like us:

コメント

タイトルとURLをコピーしました