우리회사에서는 톰캣을 가지고 서비스를 제공하고 있다. 

로그수집 방법은 Engine과 Context 두가지가 있다. 

1. ~/data/test/apache-tomcat-9.0.x/conf/logging.properties

2. ~/data/test/application/WEB-INF/classes/log4j2.xml

 

Tomcat(JUL)단에서 수집하는 log -> 서버단에 치중되어 있음

application 단에서 수집하는 log -> 개발자에 치중되어있음.

 

우선 기본적으로 다양한 로그 레벨이 있다.

운영 단에서는 3가지 정도만 알고있으면 될거같다.

 

TRACE = 가장 자세한 로그

DEBUG = 디버깅을 위한 상세한 정보(변수, SQL쿼리) 

INFO = 일반적인 정보성 메세지(서버 내 로그)


기본적인 Tomcat log 경로는 이렇다.

apache-tomcat-9.0.x/conf/logging.properties

[test@server conf]$ more logging.properties

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 
2localhost.org.apache.jul.handlers = 1catalina.org.apache.juli.AsyncFileHandler, 
java.util.logging.Consol

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8


############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler
[test@server logs]$pwd
/data/test/apache-tomcat-9.0.97/logs
[test@server logs]$ ls
catalina.2025-02-10.log             catalina.out                 localhost.2025-02-10.log
localhost_access_log.2025-02-25.txt host-manager.2025-02-10.log  manager.2024-09-06.log

이렇게 수집이 된다.


그렇다면 application단 log 경로는 이렇다

application/WEB-INF/classes/log4j2.xml

vi log4j2.xml 
#과거 CVE 취약점으로 인해 엄청난 이슈가 한번 있었다 
#현재 log4j2.xml로 파일이 바뀌게 되었는데 중요한 것은 아니다.


<Properties>
                <Property name="filename">/data/test/log/service.log</Property>
</Properties>
~
<Root level="DEBUG">
~

 

파일을 살펴보게 되면 Root level =" " 부분이 있다.

 

서비스로는 160군대, 관리 서버대수로 따지면 500대 가까이 되면서 느낀점은.

개발자들을 위해서도, 나를 위해서도 DEBUG로 두는게 좋다

 

TRACE를 넣게되면 정말 너무나도 많은 쓸모없는 로그들로 인해 문제점을 파악하기 힘들다

 

DEBUG의 경우  WAS 서비스를 하는 기업에서는 어쩔수 없이 써야하는 설정이라고 생각한다.

Tomcat과 DB가 통신하는 방식, 버튼 하나 클릭과 어떤 쿼리가 도는지. 정확히 볼수있다.

물론 사용자가 많다면 DEBUG도 분석하는데 정말 귀찮다.

 

INFO는 사실상 내 전용이다. 서버단에서만 동작하는 로그들만 볼수있어 개발자들이 사용못하고

정 사용자가 너무 많아서 로그 수집이 불가할 정도면 INFO로 설정한다.

 

효율을 위해 두개 다 로그 수집을 하고있지만 로그정리가 귀찮긴 하다.

+ Recent posts