カテゴリー
アーカイブ
アーカイブ
前回の記事では、DjangoのLoggingについてを紹介しました。 今回は2種類の方法で、ログローテーションの設定をしてみたいと思います!
前回のロガーの設定ファイル(settings.py)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '[%(asctime)s %(levelname)s] %(pathname)s %(lineno)d %(message)s',
}
},
"handlers": {
'myapp_log': {
'formatter': 'verbose',
'class': 'logging.FileHandler',
'filename': '/var/log/myapp/myapp.log',
},
'django_log': {
'formatter': 'verbose',
'class': 'logging.FileHandler',
'filename': '/var/log/myapp/django.log',
},
},
"loggers": {
"django": {
"handlers": ["django_log"],
"level": "ERROR",
'propagate': False,
},
"myapp": {
'handlers': ['myapp_log'],
'level': 'DEBUG',
'propagate': False,
}
}
}
この設定をベースに2種類ログローテーションの設定をしていきます。
TimedRotatingFileHandler (特定の時間間隔でのログローテーション)
日次でログローテーションされるように設定してみる
"handlers": {
'myapp_log': {
'formatter': 'verbose',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': '/var/log/myapp/myapp.log',
'when': 'midnight',
'interval': 1,
},
...(省略)
},
settings.pyのhandlers
部分をこのように修正します。
指定した内容について
・when : ログローテーションのタイミングを指定する。midnight=日付が変わるタイミング
・backupCount : 保持させるバックアップファイル数を指定する。今回未指定としているが、その場合は日次で無限にログファイルが作成される。 ・interval : インターバルを指定する。1のとき1日ごとにローテーションが行われる。
when の指定できるキーワード
'S' : 秒
'M' : 分
'H' : 時間
'D' : 日
'W0'-'W6' : 曜日 (0=月曜)
'midnight' : atTime が指定されなかった場合は深夜に、そうでない場合は atTime の時刻にロールオーバーされる
myapp.log
myapp.log.2022-05-25
myapp.log.2022-05-26
myapp.log.2022-05-27
...
基準となるmyapp.log の後ろに日付が入ったファイルが作成されて、日次でローテーションされます。
RotatingFileHandler : 決められたサイズでファイルをローテーション
ファイルサイズが100バイトごとに、ローテーションさせる
"handlers": {
'myapp_log': {
'formatter': 'verbose',
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/var/log/myapp/myapp.log',
'maxBytes': 100,
'backupCount': 5,
},
...(省略)
},
settings.pyのhandlers
部分をこのように修正。
指定した内容について
・maxBytes : ログファイルサイズの最大値を指定する。今回はファイルサイズが100バイトをを超えたときにログのローテーションが行われる。
・backupCount : 保持させるバックアップファイル数を指定する。
myapp.log
myapp.log.1
myapp.log.2
myapp.log.3
myapp.log.4
myapp.log.5
backupCountに5を指定しているので、myapp.log、myapp.log.1、myapp.log.2、...myapp.log.5 のログファイルでログがローテーションされます。
以上、特定の時間間隔でのログローテーションさせる方法と、ファイルサイズでログローテーションさせる方法でした!