Tag Archives: 로그

[Apache] SetEnvIf를 이용하여 Access Log 기록 여부 변경 하기

Apache에서는 SetEnvIf를 이용하여 로그 여부를 정의할 수 있습니다.

특정 설정을 환경변수로 저장 후에 그것을 이용하여 로그 여부를 정의하는 식으로 하시면 됩니다.
[code]SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] …[/code]

첫번째 인자인 attribute에는 다음의 값이 들어갈 수 있습니다.

1. HTTP HEADER


  • Host

  • User-Agent

  • Referer

  • Accept-Language
2. COMMON


  • Remote_Host – 요청하는 클라이언트의 호스트명

  • Remote_Addr – 요청하는 클라이언트의 IP 주소

  • Server_Addr – 요청을 받는 서버의 IP 주소

  • Request_Method – 사용한 Method 명 (GET, POST 등)

  • Request_Protocol – 요청의 프로토콜 이름과 버젼 (“HTTP/1.1” 등)

  • Request_URI – 요청의 Query String을 제외한 호스트명 이후의 주소
3. 기존의 환경 변수

특정 IP의 접속을 로그로 남기지 않을 경우에는 다음과 같은 설정을 하여 로그를 남기지 않도록 할 수 있습니다.
[code]SetEnvIf Remote_Addr “123.123.123.123” dont_log[/code]
적용할 가상 호스트의 로그 부분에 다음과 같이 추가합니다.
[code]CustomLog logs/access_log common env=!dont_log[/code]
access_log를 기록할때 dont_log 환경변수가 없을경우에만 기록을 하라는 것으로 생각하면 됩니다.

Tomcat 로그 최대한 줄여보기

기존에 작성했던 [이곳]의 글은 catalina.out 파일을 쓰지 못하게 하여 중복 로깅을 못하게 하는 방법이었습니다.

실제로 톰캣은 catalina.<날짜>와 catalina.out 두개의 파일을 로깅하고 있어 퍼포먼스에 조금 신경이 쓰이는 부분이었습니다.

기존의 글을 토대로 catalina.out을 제거하였다고 쳐도 admin이나 localhost같은 특이한 로그 파일이 자꾸 늘어나는것도 신경이 조금 쓰이더군요.

톰캣의 conf 디렉토리 안에있는 logging.properties 안의 내용을 다음과 같이 수정하여 봅시다.
[code]handlers = 1catalina.org.apache.juli.FileHandler

1catalina.org.apache.juli.FileHandler.level = INFO
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.[/code]
위의 내용을 제외한 나머지는 모두 주석처리 해버리면 catalina.<날짜> 형태의 로그 외에는 모두 기록하지 않습니다.

개발환경이 아닌 단순 서비스 환경에서는 이렇게 로그를 최소화 하는것이 좋겠네요.

1catalina.org.apache.juli.FileHandler.level 의 값을 조정하여 로그 레벨을 정의할수도 있습니다.