Microsoft 社는 2022년 6월 15일 Internet Explorer 11의 지원을 종료했습니다.

Apache Tomcat 로그(logging.properties) 설정

제목

Apache Tomcat 로그(logging.properties) 설정

1. Apache Tomcat 로그에 대해서

Apache Tomcat 로그는 conf/logging.properties 에 정의되어 있는데, java.util.logging.ConsoleHandler 는 표준출력으로 내보내는 것이고, org.apache.juli.AsyncFileHandler 는 파일로 내보내는 것이다.

표준출력으로 나가는 로그는 logs/catalina.out 혹은 Linux 배포판의 패키지 시스템으로 Apache Tomcat을 설치했다면, /var/log/syslog (ubuntu) 나 /var/log/messages 에 쌓이게 된다.

2. 로그 파일을 분리하자

/var/log/syslog 파일에는 syslog 가 쌓여야 하고, logs/catalina.out 이나 logs/catalina.2023-06-26.log 같은 파일에는 Apache Tomcat 자체의 로그가 쌓여야 한다.

응용프로그램에서 내보내는 로그는 디버깅을 목적으로 한 것과 운영자가 들여다 볼 필요가 있는 것을 분리할 필요가 있다.

xdbc 의 경우 sql 이 정상적으로 실행되면, finer 로그를, SQLException 이 발생하면, severe 로그를 남긴다.

graha 도 비슷하게 Exception 이 발생한 경우 severe 로그를 남기고, 디버깅을 위한 것들은 config, finer 등으로 남긴다.

graha 도 finest 로 sql 로그를 남기는데, xdbc 를 사용하지 않는 경우에만 의미가 있다.

severe 로그는 개발자가 예상치 못했던 예외적인 상황에서 남겨진 것이고, 원인을 분석해서 어떤 조치를 해야 한다는 의미이다.

로그파일의 관리를 위해서 다음과 같은 로그를 추가할 것이다.

  • 3graha_warning.org.apache.juli.AsyncFileHandler
  • 4graha_finer.org.apache.juli.AsyncFileHandler
  • 5xdbc_warning.org.apache.juli.AsyncFileHandler
  • 6xdbc_finer.org.apache.juli.AsyncFileHandler
  • 7realm.org.apache.juli.AsyncFileHandler

realm 인증을 사용하지 않는다면, 마지막 항목(7realm.org.apache.juli.AsyncFileHandler) 은 필요없다.

conf/logging.properties 파일의 handlers 항목은 다음과 같이 변경한다.

handlers = 1catalina.org.apache.juli.AsyncFileHandler, \
2localhost.org.apache.juli.AsyncFileHandler, \
3graha_warning.org.apache.juli.AsyncFileHandler, \
4graha_finer.org.apache.juli.AsyncFileHandler, \
5xdbc_warning.org.apache.juli.AsyncFileHandler, \
6xdbc_finer.org.apache.juli.AsyncFileHandler, \
7realm.org.apache.juli.AsyncFileHandler, \
java.util.logging.ConsoleHandler

3 ~ 7 을 추가하면 되고, 기존의 설정을 제거하는 것은 신중해야 한다.

conf/logging.properties 에 다음과 같은 항목을 추가한다.

3graha_warning.org.apache.juli.AsyncFileHandler.level = WARNING
3graha_warning.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3graha_warning.org.apache.juli.AsyncFileHandler.prefix = graha.warning.
3graha_warning.org.apache.juli.AsyncFileHandler.maxDays = 90
4graha_finer.org.apache.juli.AsyncFileHandler.level = FINER
4graha_finer.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4graha_finer.org.apache.juli.AsyncFileHandler.prefix = graha.fine.
4graha_finer.org.apache.juli.AsyncFileHandler.maxDays = 90
5xdbc_warning.org.apache.juli.AsyncFileHandler.level = WARNING
5xdbc_warning.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
5xdbc_warning.org.apache.juli.AsyncFileHandler.prefix = xdbc.warning.
5xdbc_warning.org.apache.juli.AsyncFileHandler.maxDays = 90
6xdbc_finer.org.apache.juli.AsyncFileHandler.level = FINER
6xdbc_finer.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
6xdbc_finer.org.apache.juli.AsyncFileHandler.prefix = xdbc.fine.
6xdbc_finer.org.apache.juli.AsyncFileHandler.maxDays = 90

kr.xdbc 와 kr.graha 로 시작하는 패키지에 적용하기 위해서 다음과 같은 항목을 추가한다.

kr.xdbc.level = FINER
kr.xdbc.handlers = 5xdbc_warning.org.apache.juli.AsyncFileHandler, 6xdbc_finer.org.apache.juli.AsyncFileHandler
kr.xdbc.useParentHandlers = false
kr.graha.level = FINER
kr.graha.handlers = 3graha_warning.org.apache.juli.AsyncFileHandler, 4graha_finer.org.apache.juli.AsyncFileHandler
kr.graha.useParentHandlers = false

realm 을 사용하고, 디버깅을 위한 로그가 필요한 경우에 다음과 같은 설정도 추가할 수 있다.

7realm.org.apache.juli.AsyncFileHandler.level = FINEST
7realm.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
7realm.org.apache.juli.AsyncFileHandler.prefix = realm.
7realm.org.apache.juli.AsyncFileHandler.maxDays = 90
org.apache.catalina.realm.level = FINEST
org.apache.catalina.realm.handlers = 7realm.org.apache.juli.AsyncFileHandler
org.apache.catalina.realm.useParentHandlers = false
org.apache.catalina.authenticator.level = FINEST
org.apache.catalina.authenticator.handlers = 7realm.org.apache.juli.AsyncFileHandler
org.apache.catalina.authenticator.useParentHandlers = false
7realm.org.apache.juli.AsyncFileHandler.bufferSize = -1
제목

첨부파일