Apache | 로그 파일 | 로그 로테이션 (rotetalogs)

로그는 별도로 지정하지 않으면 하나의 파일에 기록을 이어간다. 따로 설정을 하게 되면 로그를 일정 기간마다 별도의 파일로 전환될 수 있게 할 수 있다. 예를 들어 하루 단위로 별도의 로그 파일로 기록하도록 하면 관리도 편해진다.

로그 로테이션 (rotetalogs)

로그를 순환하는 유틸리티 프로그램을 Apache에서는 제공하고 있다. “{Apache 설치 디렉터리}/Apache24/bin” 디렉터리에 들어있는 “rotatelogs” 프로그램을 사용한다.

사용법은 다음과 같다.

rotatelogs 대상-로그-파일 지정-시간

지정 시간은 초 단위로 로그를 분할하는 시간을 지정한다. 1 일 단위라면 “60 × 60 × 24 = 86400 “으로 지정한다.

로그 로테이션은 “httpd.conf"로 설정하여 자동으로 할 수 있다. 설정하려면 “CustomLog"에 대해 다음과 같이 설정한다.

CustomLog "| rotatelogs 대상-로그-파일 지정=시간" 로그-형식명

예를 들어 “common” 로그 포맷을 사용하여 1일 단위의 로그 회전을 설정하려면 다음과 같이 작성한다.

CustomLog logs/access.log common
CustomLog "|bin/rotatelogs.exe logs/access.log 86400" common

Windows 운영체제에선 반드시 rotatelogs 다음에 .exe 를 붙여주어야 한다.

이것으로 로그가 저장될 때 지정된 시간이 경과할 때마다 다른 로그 파일을 생성하여 기록하게 된다.

그럼 실제로 해보록 하자. 앞에서의 설정을 “httpd.conf"로 설정하고 Apache를 재시작한다. 그리고 Apache에서 공개된 파일에 액세스한다.

C:\apache\Apache24\logs>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: XXXX-XXXX

 C:\apache\Apache24\logs 디렉터리

2019-12-07  오전 01:40    <DIR>          .
2019-12-07  오전 01:40    <DIR>          ..
2019-12-07  오전 01:40               427 access.log
2019-12-07  오전 01:40                 0 access.log.1575590400
2019-12-07  오전 01:40               532 error.log
2019-12-07  오전 01:40                 6 httpd.pid
               4개 파일                 965 바이트
               2개 디렉터리  450,662,526,976 바이트 남음

C:\apache\Apache24\logs>

위와 같이 새로 “access.log.1575590400"라는 파일이 생성되어 로그가 저장되어 있다. 뒤에 붙어있는 “.1575590400"는 1970년 1월 1일 이후의 시간을 초단위로 표시한다.

그러면 클라이언트에 설정되어있는 날짜를 2일 진행 후 다시 Apache의 파일에 액세스해 본다.

C:\apache\Apache24\logs>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: XXXX-XXXX

 C:\apache\Apache24\logs 디렉터리

2019-12-09  오전 01:51    <DIR>          .
2019-12-09  오전 01:51    <DIR>          ..
2019-12-07  오전 01:40               427 access.log
2019-12-07  오전 01:41               475 access.log.1575590400
2019-12-09  오전 01:51                 0 access.log.1575763200
2019-12-07  오전 01:40               532 error.log
2019-12-07  오전 01:40                 6 httpd.pid
               5개 파일               1,440 바이트
               2개 디렉터리  450,650,722,304 바이트 남음

C:\apache\Apache24\logs>

이전 생성된 로그에서 86400 초 이상 경과하여, 새 로그 파일이 생성되고 기록이 되고 있다.

로그 파일의 형식을 지정

별로 설정을 하지 않으면 로그 파일 뒤에 1970년 1월 1일 이후의 시간을 초단위로 표시된다. 이대로는 알아 보기 어렵기 때문에 로그를 구별하기 위해 붙는 부분의 포맷을 지정할 수 있다. 예를 들어, 시간(초)가 아닌 날짜를 표시하도록 하려면 다음과 같이 작성한다.

CustomLog “| ¥"D : / Apache Group / Apache2.2 / bin / rotatelogs ¥ “¥"D : / Apache Group / Apache2.2 / logs / access.log % Y- % m- % d ¥ “86400” common

CustomLog "|bin/rotatelogs.exe logs/access.log.%Y-%m-%d 86400" common

대상 로그 파일명 뒤에 마침표(.)를 입력 후 포맷을 지정한다. 이번에는 날짜를 “-“으로 구분된 형식으로 지정하였다.

그럼 실제로 해보도록 하겠다. 위에 설정을 “httpd.conf"에 설정하고 Apache를 재시작한다. 그리고 뭔가 Apache에서 공개된 파일에 액세스한다.

C:\apache\Apache24\logs>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: XXXX-XXXX

 C:\apache\Apache24\logs 디렉터리

2019-12-07  오전 02:05    <DIR>          .
2019-12-07  오전 02:05    <DIR>          ..
2019-12-07  오전 02:04               122 access.log
2019-12-07  오전 02:04               122 access.log.2019-12-06
2019-12-07  오전 02:05             1,287 error.log
               3개 파일               1,531 바이트
               2개 디렉터리  450,652,733,440 바이트 남음

C:\apache\Apache24\logs>

이번에는 지정된 형식의 형식으로 날짜가 추가되었다.

참조




최종 수정 : 2019-12-10