Django에서 로그 기록 시 RotatingFileHandler 이용하기

RotatingFileHandler 설정

Python에서 제공하는 로깅 중 'logging.handlers.RotatingFileHandler'은 로그를 파일에 기록하면서 일정 크기 단위로 백업을 해준다. 이를 Django에서 사용하기 위해서는 setting.py 파일에 아래와 같이 handler 설정을 추가한다. 

'handlers': {
    'file': {
        'level''DEBUG',
        'class''logging.handlers.RotatingFileHandler',
        'filename': os.path.join(BASE_DIR, 'logs/logfile'),
        'formatter''verbose',
        'maxBytes'1024 * 1024 * 1,  # 1MB
        'backupCount'5,
    },
},
cs


개발 환경에서 사용 시 주의할 점

위와 같이 설정하면 로그 파일이 지정한 사이즈에 도달하였을 때, 백업 및 신규파일이 생성된다. 그러나 runserver를 이용하여 개발하는 경우 아래와 같은 에러가 발생할 수 있다. 

Traceback (most recent call last):
  File "c:\python27\Lib\logging\handlers.py", line 77, in emit
    self.doRollover()
  File "c:\python27\Lib\logging\handlers.py", line 140, in doRollover
    os.rename(self.baseFilename, dfn)
WindowsError: [Error 32]
cs

이런 경우에는 runserver 실행 시 '--noreload' 옵션을 추가하여 해결할 수 있다.

python manage.py runserver 0.0.0.0:8000 --noreload
cs


참고

  - Django logging with RotatingFileHandler error


참고: 실행환경

  - Windows 7 Professional K

  - Python 2.7.6

  - Django 1.9.7



댓글 쓰기

0 댓글