제8장 Logging

내용 목차

8.1. 개요
8.2. JEUS 로거 기본 구조
8.2.1. 개요
8.2.2. Launcher 로거
8.2.3. 서버 로거
8.2.4. 액세스 로거
8.2.5. 사용자 로거
8.2.6. 로거 리스트
8.2.7. 로그 메시지 모듈 이름
8.3. 로깅 설정
8.3.1. 로거 정보 확인
8.3.2. 동적으로 로거 설정
8.3.3. 표준 출력과 표준 에러를 로그 형식으로 출력 설정
8.3.4. 로거 설정
8.3.5. 로그 파일 로테이션 설정
8.3.6. 프로퍼티 설정

본 장에서는 JEUS 로깅(Logging) 시스템에 대해 JEUS의 로거 구조 및 각 로거와 핸들러를 설정하는 방법, 로그 메시지의 내용에 대해서 설명한다.

JEUS 로깅(Logging)은 JEUS 실행 중에 시스템에서 수행되었던 일련의 작업들에 대한 내용을 순서대로 보관, 기록하는 작업이다. 이를 통해서 시스템 관리자는 JEUS에서 일어난 여러 작업들에 대한 내용을 이해하고, JEUS 실행 도중에 발생한 여러 에러 상황을 파악하여 그에 따른 대처를 할 수 있다.

JEUS는 시스템 및 애플리케이션에서 발생하는 여러 가지 상황들을 로그(log)를 통해 알려준다. JEUS는 Java SE에서 기본으로 제공되는 표준 Logging API(java.util.logging)를 사용한다. 따라서 로깅 시스템의 구조나 설정 방식도 로깅 API를 따르며 로거(logger), 핸들러(handler), 포맷터(formatter) 구조를 그대로 반영하고 있다. 또한, 개발자가 로깅 API를 이용하여 JEUS의 로거를 사용할 수 있다.

JEUS 로거 시스템은 Java SE Logging API를 기반으로 구현되었기 때문에 개발자는 이 API를 통해 JEUS 로깅 시스템을 Customize할 수 있다.

JEUS 로거의 종류는 JEUS Launcher와 JEUS 서버, 그리고 WEB 엔진에서 사용되는 액세스 로그가 있다. 각 로거는 "jeus 로거"(여기서 "jeus"는 로거의 이름, 이하 jeus 로거)를 기준으로 생성되어 있다. JEUS 서버는 모두 "jeus 로거"를 기본적으로 생성한다. 하위에 생기는 여러 가지 모듈들은 jeus.ejb 등과 같이 jeus 하위의 로거를 생성해서 사용한다.

참고

"jeus 로거"는 JEUS에서 사용되는 최상위 로거의 이름이다. 사용자가 설정하지 않아도 이 로거는 기본적으로 존재한다.

이런 여러 가지 로거 중에서 JEUS 설정 파일에서 설정 가능한 로거는 다음과 같다.

  • jeus 로거

  • user 로거

  • 웹 엔진에서 사용하는 액세스 로거

  • jeus 로거의 하위 로거

  • Java 로거

핸들러는 실제 로거에서 출력하려는 로그 메시지를 어떤 대상을 통해 기록하는 역할을 한다. 따라서 로거는 항상 핸들러를 동반한다. JEUS에서는 로그 메시지의 출력 대상에 따라 다음의 4가지 종류의 로거에 핸들러(handler)를 설정할 수 있고, 설정된 핸들러를 통해 로그 메시지가 기록된다. 이 중 가장 보편적으로 사용하는 것이 파일 핸들러(File Handler) 이다.

구분설명
파일 핸들러로거를 통해 로깅되는 로그 메시지를 파일에 기록한다.
SMTP 핸들러로그 메시지를 메일을 통해 기록한다.
소켓 핸들러로그 메시지를 지정한 IP를 통해 기록한다.
user 핸들러사용자가 작성한 핸들러를 통해 로그 메시지를 기록한다.

이 외의 핸들러에 대한 설명과 각 로거에 대한 핸들러를 JEUS 설정 파일에 설정하는 방법에 대해서는 “8.3.1. 로거 정보 확인”에서 설명한다. 로깅 시스템에 대한 기본적인 이해는 Java SE Logging API를 참고한다.

버전별 주요 변경사항

다음은 각 버전별 주요 변경사항에 대한 설명이다.

  1. JEUS 6까지는 콘솔 핸들러도 설정이 가능했지만 JEUS 7부터는 설정할 수 없다.

  2. JEUS 7부터는 서버 프로세스의 콘솔은 존재하지 않는다. Launcher를 통해 서버를 부팅하기 때문에 Launcher 프로세스의 콘솔이지 서버 프로세스의 콘솔은 아니다.

    서버에서 발생하는 로그 메시지들을 콘솔로 출력하기 위해서는 Launcher 프로세스가 서버가 shutdown될 때까지 다운되지 않아야 한다. 서버를 띄울 때 -verbose 옵션을 주고 띄우면 Launcher 프로세스는 서버가 다운될 때까지 다운되지 않고 서버에서 발생하는 로그 메시지들을 파이프를 통해 읽어 콘솔로 출력한다.

  3. JEUS 7 Fix#4 버전부터 Asynchronous logging를 지원한다. 로깅을 log를 호출한 worker thread에서 처리하지 않고 전담 logger thread에서 처리함으로서 JEUS 전체적인 성능의 향상을 위함이다. 이 방식에서는 로깅이 지연될 수 있는 파일 핸들러 외의 나머지 핸들러는 지원하지 않는다. 만약 나머지 핸들러들을 쓰고 싶다면 jeus.logging.useAsync 옵션을 false로 설정한다. 또한 Asynchronous logging 방식에서는 jeus.access.logging.skip.when.busy 옵션을 true로 함으로서 성능에 민감한 web worker가 현재 로깅이 밀려있어 기다리게 되는 현상을 자동으로 detect하여 access logger만큼은 기다리지 않고 넘어갈 수 있도록 지원한다.

  4. JEUS 8.5 버전부터 Asynchronous logger의 예외상황이 발생하는 경우에 이를 기록할 수 있는 Status logger를 도입한다.

    Asynchronous logger로 로깅 작업 시에 문제가 발생했을 때에 원인을 찾을 수 있도록 하기 위함이다. 사용자가 별도로 설정할 수 없으며, 기본값으로 파일 핸들러(FileHandler)를 통해 문제 발생 시에 JeusLoggerStatus.log 파일에 문제 상황에 대해 로그를 기록한다. Asynchronous logger에 문제 상황이 발생하지 않는다면 JeusLoggerStatus.log 파일도 생성되지 않는다.

  5. JEUS 8.5 버전부터 Pattern formatting을 지원해서 로깅 시에 출력할 로그의 포맷을 사용자가 지정할 수 있도록 한다.

    JEUS의 서버 로그에 적용되며 총 8가지의 형식 문자열(%d, %l, %J, %T, %c, %M, %N, %m)을 지원한다. 사용자는 형식 문자열과 일반 문자를 조합하여 원하는 로깅 패턴을 설정할 수 있다(단, 형식문자열의 식별을 위하여 '%' 문자는 로깅 패턴에 포함시킬 수 없다).

    JEUS 이전 버전에서 지원했던 SimpleFormatter와 SimpleMillisFormatter 또한 형식문자열과 문자열의 조합인 로깅 패턴으로 동일하게 출력할 수 있다.

    • SimpleFormatter

      [%d{yyyy.MM.dd HH:mm:ss}][%l] [%J-%T] [%M-%N] %m
    • SimpleMillisFormatter

      [%d{yyyy.MM.dd HH:mm:ss:SSS}][%l] [%J-%T] [%M-%N] %m

    로깅 패턴의 기본값은 기존의 SimpleFormatter와 동일한 패턴의 로그를 출력하는 로깅 패턴으로 되어 있다. 형식 문자열 등 자세한 설정은 “8.3.1. 로거 정보 확인”에서 설명한다.

본 절에서는 로거를 사용하기 위한 기본 개념을 설명하고 실제 설정 방법에 대해서 설명한다.

서버에 로거를 설정하지 않아도 최상위 로거인 jeus 로거는 기본적으로 존재한다. 파일 핸들러(File Handler)를 사용하고 매일 로그 파일이 로테이션될 수 있도록 한다. 로그 로테이션을 비롯한 파일 핸들러에 대한 자세한 내용은 “8.3.1. 로거 정보 확인”에서 설명한다.

참고

jeus 로거는 로거 삭제 명령으로 삭제할 수 없다. jeus 로거를 삭제하면 다른 로거를 설정하지 않은 경우 서버에 아무런 로그 메시지도 로깅되지 않기 때문에 운영상 문제가 될 수 있다. 만약 서버에서 로거를 남기고 싶지 않다면 jeus 로거의 레벨을 OFF로 설정해야 한다.

도메인에 등록된 서버의 삭제 역시 해당 서버의 logs 디렉터리 삭제를 의미하지는 않는다. 로거는 관리자가 언제든지 열람할 수 있는 중요한 정보이기 때문에 필요없다고 판단하여 지우는 역할은 관리자의 몫이다.

로그 디렉터리 구조

로거에서 파일 이름을 별도로 지정하지 않았다면 JEUS에서는 정해진 위치에 로그 파일들을 생성한다. 로그 디렉터리의 구조는 다음과 같다.

SERVER_HOME
        |--logs
        |--servlet
        |--access.log
        |--JeusLauncher.log
        |--JeusServer.log
        |--JeusLoggerStatus.log
        |--jvm.log

다음은 로그 디렉터리에 기본적으로 생성되는 로그 파일에 대한 설명이다.

servlet/access.log

웹 애플리케이션 요청에 대한 액세스 로그 파일이다. 기본적으로 서버의 모든 웹 애플리케이션으로 요청한 내용이 기록된다. 웹 엔진에 가상 호스트가 설정되어 있다면 servlet 디렉터리 하위에 가상 호스트 이름으로 디렉터리가 생성되고 그 하위에 access.log 파일을 생성하여 가상 호스트로 요청된 정보들이 로깅한다.

JeusLauncher.log

Launcher에서 서버 기동을 위해 남기는 정보와 서버를 부팅할 때 발생하는 로그 메시지를 로깅한다.

JeusServer.log

서버에서 로깅하는 기본 로그 파일이다. 서버에 로거관련 설정을 하지 않았다면 jeus 로거를 포함한 하위 모든 로거에 대한 기본 로그 파일이 된다.

JeusLoggerStatus.log

JEUS 7 Fix4부터 기본으로 설정되는 Asynchronous logger(서버 로거)의 로깅 중 예외를 기록하는 로그 파일이다. Asynchronous logger가 정상적으로 동작한다면 생기지 않지만 예외 상황이 발생하면 해당 예외를 로깅하며 생성된다.

jvm.log

서버 JVM에서 발생하는 gc 로그나 Thread Dump 등이 기록된다. Launcher에서 서버를 시작할 때 특정 JVM 옵션을 넣기 때문에 생성되는 파일이다.

Launcher에서 서버를 시작할 때 JVM 옵션에 다음을 추가한다.

-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=SERVER_HOME/logs/jvm.log

JVM 로그를 별도의 파일에 기록하도록 설정하는 이유는 서버가 백그라운드 프로세스로 동작하면서 서버의 Thread Dump가 더 이상 콘솔에 남지 않기 때문이다. 이 로그의 위치를 변경하려면 -XX:LogFile 옵션을 서버의 JVM 옵션에 추가해주면 기본 설정이 무시되고 사용자의 설정을 따른다.

사용자 정의 gc log file

Oracle의 경우 "-Xloggc:", IBM의 경우 "-Xverbosegclog:" 옵션을 사용하여 gc log file을 지정할 수 있다. 이때 JEUS에서는 지정된 파일 뒤에 자동으로 time stamp를 붙여서 JEUS를 띄울 때마다 생기는 gc log file을 구별할 수 있는 옵션을 제공한다.(기본값) 만약 time stamp를 붙이고 싶지않다면 기동 스크립트에 -Djeus.logging.gclog.timestamp.on=false 라는 JVM 옵션을 추가한다.

특정 로그 디렉터리 설정

서버에서 생성하는 모든 로그(Rotation Backup 로그 포함)들을 특정 디렉터리에 저정하고 싶다면 WebAdmin을 사용해서 다음과 같이 설정한다.

WebAdmin 메인 화면에서 마스터 서버를 선택하여 설정 화면을 펼친 다음, 상단의 서버 탭을 선택하여 서버 목록을 표시한다. 서버 목록에서 설정을 수정할 서버를 선택하면 서버 설정 화면이 펼쳐진다. 서버 설정 화면 상단 탭에서 [Basic]을 선택하면 설정 항목들이 나타나는데, 그 중 Log Home 항목을 수정하면 JEUS Server에서 만드는 log 파일들의 기본 경로를 지정할 수 있다.

Launcher는 서버를 기동하기 위해 사용되는 프로세스이다. 실행 스크립트나 명령어를 통해 서버를 기동시키면 Launcher 프로세스가 실행되고, Launcher에서는 설정 파일을 읽고 실제 서버를 시작시킨다. Launcher에서는 서버가 부팅되면서 발생하는 로그 메시지를 JeusLauncher.log 파일과 콘솔에 남긴다. Launcher 프로세스는 일반적으로 서버가 부팅을 완료하면 종료하여 서버의 부팅 로그만 Launcher 로거를 통해 남긴다. 하지만 서버를 실행할 때 -verbose 옵션을 주었다면 Launcher 프로세스는 서버의 부팅이 완료된 후에도 종료되지 않고 서버가 다운될 때까지 남겨지는 모든 로그 메시지를 Launcher의 콘솔과 파일을 통해 남긴다.

서버에서 서버 로거를 통해 로깅하고 있는 로그 메시지들을 Launcher 프로세스에서 별도로 로깅하는 이유는 서버 부팅 중에 서버에서 로깅을 할 수 없는 상황에서 발생할 수 있는 오류 때문이다. 예를 들어 설정 파일 오류 등의 이유로 서버를 기동시키지 못했거나, 서버가 기동은 되었지만 부팅 실패로 인해 서버의 로거가 초기화되기 전에 종료되었다면 부팅 실패의 원인을 알 수 있는 로그 메시지들이 서버 로거를 통해 남을 수가 없다. 따라서 Launcher에서는 서버의 부팅 로그를 Launcher 자신의 로거를 통해 남겨서 사용자가 Launcher 로그를 확인하여 서버가 부팅할 때 발생한 오류를 해결할 수 있도록 한다. Launcher에 대한 자세한 내용은 “1.4. Launcher”를 참고한다.

다음은 설정 파일 오류로 인한 부팅에 실패할 때 Launcher에서 남긴 로그 메시지의 예이다.

[2016.08.24 12:38:52][0] [launcher-1] [XmlValidationEventHandler] [FATAL_ERROR]
Invalid content was found starting with element <system-clustering-framework>
(of parent element <domain>). One of '{password-validator, admin-server-name}'
is expected.

[2016.08.24 12:38:52][0] [launcher-1] [SERVER-0522] An exception occurred while processing [domain.xml].
<<__Exception__>>
jeus.xml.binding.JeusJAXBException: Unmarshalling the XML descriptor failed:
domain.xml
class org.xml.sax.SAXParseException :
cvc-complex-type.2.4.a: Invalid content was found starting with element
'system-clustering-framework'. One of '{"http://www.tmaxsoft.com/xml/ns/jeus":password-validator,
"http://www.tmaxsoft.com/xml/ns/jeus":admin-server-name}' is expected..
at jeus.xml.binding.BindingHelper.getDescriptor(BindingHelper.java:96)
at jeus.service.descriptor.DescriptorFile.getDeploymentDescriptor(DescriptorFile.java:210)
at jeus.service.descriptor.JEUSDomainDescriptorFile.getConfigDescriptor(JEUSDomainDescriptorFile.java:54)
at jeus.launcher.Launcher.initDomainType(Launcher.java:222)
at jeus.launcher.Launcher.readDescriptor(Launcher.java:210)
at jeus.launcher.Launcher.start(Launcher.java:105)
at jeus.launcher.Launcher.main(Launcher.java:58)

서버가 운영되는 동안 발생하는 로그 메시지를 로깅한다. 각 로그 메시지들은 서버가 운영 중에 하는 작업들에 대한 정보를 함축적으로 나타낸다.

JEUS의 기본 로거는 최상위 로거인 jeus 로거이고, jeus 로거의 하위 로거들은 jeus 로거의 핸들러를 통해 로깅된다. 서버에서 로깅되는 로거는 동적으로 추가, 삭제, 변경이 가능하다. 핸들러 역시 동적 추가, 삭제, 변경이 가능하다.

로그 메시지의 포맷은 formatter pattern을 통해 변경 가능하다. 아무런 설정이 없다면 다음과 같은 형태로 출력되는 JEUS에서 제공하는 기본 포맷 패턴인 '[%d{yyyy.MM.dd HH:mm:ss}][%l] [%J-%T] [%M-%N] %m'가 사용된다.

이전 버전에서 지원했던 포매터인 SimpleFormatter와 SimpleMillisFormatter의 로깅 패턴은 다음과 같다.

  • SimpleFormatter

    [%d{yyyy.MM.dd HH:mm:ss}][%l] [%J-%T] [%M-%N] %m
  • SimpleMillisFormatter

    [%d{yyyy.MM.dd HH:mm:ss:SSS}][%l] [%J-%T] [%M-%N] %m

다음은 서버 로거의 형식에 대한 설명이다.

  • 로그 형식

    [%d{yyyy.MM.dd HH:mm:ss}] [%l] [%J-%T] [%M-%N] %m
    항목설명
    %d{yyyy.MM.dd HH:mm:ss}로그 이벤트의 날짜를 출력한다. 뒤에 '{}' 에 추가하는 DATE_FORMAT에는 출력하고자하는 날짜의 형식을 입력한다. DATE_FORMAT의 Formatting 방식은 JDK의 SimpleDateFormat 방식을 따른다.
    %l

    로그 이벤트의 로그 레벨이 그에 매핑되는 숫자로 출력된다.

    • 0 : SEVERE

    • 1 : WARNING

    • 2 : INFO

    • 3 : CONFIG

    • 4 : FINE

    • 5 : FINER

    • 6 : FINEST

    • 7 : ALL

    %J로그 메시지를 로깅하는 프로세스가 출력된다. Thread 정보를 나타낸다.
    %T로그 메시지를 로깅하는 Thread 번호가 출력된다. Thread 정보가 같은 로그 메시지는 같은 Thread에서 로깅한 것이다.
    %M로그를 출력하는 모듈의 이름이 출력된다. 각 모듈에 해당하는 이름은 “8.2.7. 로그 메시지 모듈 이름”을 참고한다.
    %N출력되는 로그 이벤트의 메시지 번호를 출력한다.
    %m운영 중에 발생한 일에 대한 의미를 함축하고 있는 로그 메시지이다.
    %c로그 메시지를 로깅하는 로거의 이름을 출력한다.

참고

Launcher 프로세스에서 로깅되는 로그 메시지는 별도로 설정할 수 없으며 기본 formatter pattern을 따른다.

다음은 실제 JEUS 서버에 출력되는 로그 메시지의 예이다.

[2022.08.26 16:01:33][2] [ms1-1] [SERVER-0248] The JEUS server is STARTING.
[2022.08.26 16:01:34][0] [ms1-1] [SERVER-0000] Version information - JEUS 21 (21.0.0.0-b424).
[2022.08.26 16:01:34][0] [ms1-1] [SERVER-0001] java.specification.version=[1.8], java.runtime.version=[1.8.0_251-b08], vendor=[Oracle Corporation]
[2022.08.26 16:01:34][2] [ms1-1] [SERVER-0003] os.name=[windows 10], os.arch=[amd64], os.version=[10.0]
[2022.08.26 16:01:34][2] [ms1-1] [SERVER-0002] Domain=[domain1], Server=[ms1], baseport=[19736], pid=[17004]
[2022.08.26 16:01:34][2] [ms1-1] [SERVER-0004] The current system time zone : 한국 표준시
[2022.08.26 16:01:34][2] [ms1-1] [SERVER-0571] All JEUS system properties have been confirmed.
[2022.08.26 16:01:34][2] [ms1-1] [SERVER-0568] Service address='0.0.0.0:19736', hostname='JEUS-PC', representation ip='192.168.1.105'
[2022.08.26 16:01:34][2] [ms1-1] [SERVER-0561] The default RMI export port = 19743 and bind address = JEUS-PC/192.168.1.105.
[2022.08.26 16:01:34][2] [ms1-1] [NET-0002] Beginning to listen to NonBlockingChannelAcceptor: 0.0.0.0:19736.

우선, 첫 번째 로그 메시지는 2022년 8월 26일 오후 4시 1분 33초에 출력된 레벨 2(INFO 레벨)의 메시지라는 것을 알려준다. 이 로그 메시지는 ms1라는 서버에서 1번 Thread에 의해 로깅되었고, SERVER 모듈의 0248번 메시지가 출력되었음을 알 수 있다. 실제 이 로그 메시지는 JEUS 서버가 부팅을 시작했음을 알리는 서버의 최초 메시지이다.

다른 로그 메시지들 역시 첫 번째 메시지와 같은 프로세스에서 로깅되고, SERVER 모듈의 메시지가 출력된 것을 알 수 있다. 위 로그 메시지들은 서버가 부팅할 때 발생하는 것으로 JEUS 버전, Java 버전, 프로세스 ID, TimeZone, 네트워크 정보와 같은 환경 정보를 출력하고 있다.

JEUS에서는 서버 로거의 formatter pattern으로 기본 포맷 패턴으로 [%d{yyyy.MM.dd HH:mm:ss}] [%l] [%J-%T] [%M-%N] %m 이 설정되어있다. 이전 버전에서 SimpleFormatter가 출력하는 포맷 패턴이며 이전 버전에서 SimpleFormatter와 함께 제공했던 SimpleMillisFormatter의 포맷 패턴은 [%d{yyyy.MM.dd HH:mm:ss:SSS}] [%l] [%J-%T] [%M-%N] %m 이다.

다음은 SimpleMillisFormatter와 동일한 로그 형식을 출력하는 포맷 패턴을 설정했을 때 발생하는 로그 메시지의 예이다. 포맷터 설정에 대한 자세한 내용은 “8.3. 로깅 설정”을 참고한다.

[2022.08.26 16:01:33][2] [ms1-1] [SERVER-0248] The JEUS server is STARTING.
[2022.08.26 16:01:34:385][0] [ms1-1] [SERVER-0000] Version information - JEUS 21 (21.0.0.0-b424).
[2022.08.26 16:01:34:385][0] [ms1-1] [SERVER-0001] java.specification.version=[1.8], java.runtime.version=[1.8.0_251-b08], vendor=[Oracle Corporation]
[2022.08.26 16:01:34:386][2] [ms1-1] [SERVER-0003] os.name=[windows 10], os.arch=[amd64], os.version=[10.0]
[2022.08.26 16:01:34:387][2] [ms1-1] [SERVER-0002] Domain=[domain1], Server=[ms1], baseport=[19736], pid=[17004]
[2022.08.26 16:01:34:387][2] [ms1-1] [SERVER-0004] The current system time zone : 한국 표준시
[2022.08.26 16:01:34:560][2] [ms1-1] [SERVER-0571] All JEUS system properties have been confirmed.
[2022.08.26 16:01:34:568][2] [ms1-1] [SERVER-0568] Service address='0.0.0.0:19736', hostname='JEUS-PC', representation ip='192.168.1.105'
[2022.08.26 16:01:34:580][2] [ms1-1] [SERVER-0561] The default RMI export port = 19743 and bind address = JEUS-PC/192.168.1.105.
[2022.08.26 16:01:35:030][2] [ms1-1] [NET-0002] Beginning to listen to NonBlockingChannelAcceptor: 0.0.0.0:19736.

액세스 로거는 사용자의 애플리케이션 요청이 어떻게 처리되는지를 남기기 위한 용도로 사용된다. 웹 애플리케이션으로의 요청에 대한 정보가 기록된다. 본 절에서는 웹 엔진에서의 액세스 로거에 대해 설명한다.

웹 엔진에서의 액세스 로거

웹 엔진 액세스 로거는 웹 엔진이 처리한 모든 요청을 기록한다. 액세스 로거로 기록되는 로그는 웹 애플리케이션에 접근한 정보와 기록할 내용을 지정하여 관리자가 필요한 정보를 얻을 수 있다. 웹 엔진으로 요청이 들어와 해당 요청을 모두 처리하고 그 응답을 보낸 후 액세스 로거는 설정된 정보를 기록한다.

웹 엔진 액세스 로거로 기록되는 로그들은 기본적으로 공통 로그 형식(Common Log Format)을 지원한다. 이 형식은 Apache와 같은 많은 곳에서 공통으로 사용하고 있으므로 로그를 액세스 분석하는 데 많은 정보를 얻을 수 있다. 특히 로그 분석 도구의 경우 공통 로그 형식을 분석하는 도구들이 많이 있으므로 이 도구들을 이용하면 웹 엔진의 액세스 로그를 분석하는 데 큰 도움이 된다.

참고

JEUS 6까지는 공통 로그 형식을 지원하지 않았다.

그리고 웹 엔진의 경우 가상 호스트를 설정할 수 있는데 가상 호스트를 설정한 경우 가상 호스트별로 액세스 로거를 설정해서 별도의 액세스 로그를 수집할 수 있다. 이때 가상 호스트의 액세스 로그는 다음의 파일명으로 남게 된다.

SERVER_HOME/logs/servlet/가상 호스트명/access.log

웹 엔진 액세스 로그의 기본 형식으로 액세스 로그를 남겼다면 다음과 같은 로그들이 access.log에 남는다.

192.168.15.57 [29/Aug/2016:17:37:02 +0900] "GET /example/test1.jsp HTTP/1.1" 200 5 38        

위 로그는 192.168.15.57 IP로부터 /example/test1.jsp 요청의 결과 정상적으로 38Byte의 응답을 29/Aug/2016:17:37:02 +0900 시간에 보냈다는 것을 의미한다. 보다 자세한 로그 형식은 공통 로그 형식에 대한 문서를 참고한다.

기록되는 로그의 형식을 바꾸거나 그 외의 웹 엔진 액세스 로거의 설정에 대한 자세한 내용은 JEUS Web Engine 안내서”의 절 1.6.10. “액세스 로그 기본 설정”을 참고한다.

다음은 로거 목록에 대한 설명이다.

  • EJB 관련

    구분설명
    jeus.ejb.beanEJB Home/Object Stub 관련 로거
    jeus.ejb.clusterEJB 클러스터링 관련 로거
    jeus.ejb.compilerEJB Stub Compiler 관련 로거
    jeus.ejb.connectorMDB와 리소스 어댑터 관련 로거
    jeus.ejb.containerEJB 컨테이너 관련 로거
    jeus.ejb.ejbserverEJB 엔진 관련 로거
    jeus.ejb.interopEJB CORBA 연동 관련 로거
    jeus.ejb.persistenceCMP 관련 로거
    jeus.ejb.schemaEJB QL 관련 로거
    jeus.ejb.timerEJB Timer 관련 로거
    jeus.ejb.transactionEJB Transaction & Synchronization 관련 로거
    jeus.ejb.webserverEJB Class FTP 관련 로거
    jeus.ejb.util기타 로거
  • JPA 관련

    구분설명
    jeus.persistenceJPA 모듈의 최상위 로거
    jeus.persistence.providerTopLink Essentials(default provider)의 최상위 로거
    jeus.persistence.containerJPA에 대한 컨테이너 로거
  • Servlet 관련

    구분설명
    jeus.servlet.commonServlet 공통 모듈 관련 로거
    jeus.servlet.connectionConnector 관련 로거
    jeus.servlet.connectorNIO Connector 관련 로거
    jeus.servlet.deploymentDeploy 관련 로거
    jeus.servlet.engineServlet 주요 처리 과정 관련 로거
    jeus.servlet.filter필터 관련 로거
    jeus.servlet.jspJSP 관련 로거
    jeus.servlet.listenerServlet Listener 관련 로거
    jeus.servlet.loader클래스 로더 관련 로거
    jeus.servlet.property프로퍼티 관련 로거
    jeus.servlet.servletsJEUS에서 제공하는 Servlet 관련 로거
    jeus.servlet.util유틸리티에서 사용하는 로거
    jeus.websocketwebsocket 서버에 대한 모든 로거
    jeus.webserverClass FTP 서비스에서 사용하는 로거

  • Session Manager 관련

    구분설명
    jeus.sessionSession Manager의 최상위 로거, 공통적으로 사용되는 로거
    jeus.session.distributed분산식 Session Manager의 로거
  • 웹 서비스 관련

    • JAX-RPC/SAAJ 로거

      구분설명
      jeus.webservices.clientjeus.webservices.client 패키지(client invocation framework) 관련 로거
      jeus.webservices.encodingSOAP serialize/deserialize 관련 로거
      jeus.webservices.messageSAAJ 및 SOAP 메시지 관련 로거
      jeus.webservices.wsdlWSDL 처리 관련 로거
      jeus.webservices그 외 웹 서비스 관련 로거
    • UDDI 로거

      구분설명
      jeus.uddi.datastoreDB 프로세싱 관련 로거
      jeus.uddi.functionUDDI API 메시지 프로세싱 관련 로거
      jeus.uddi.judyRegistry Server Engine 관련 로거
      jeus.uddi.registryTransport layer, Reqeust/Response 프로세싱, Registry 엔진 관련 로거
    • WS-* 로거 (JAX-RPC 기반)

      구분설명
      jeus.webservices.wssws-security 관련 로거
    • 기타

      구분설명
      jeus.xml.binding.webservicesHelperEWS(JSR109)에 사용되는 DD 바인딩 관련 로거
  • 트랜잭션 관련

    구분설명
    jeus.transaction트랜잭션 매니저 전반적으로 사용하는 로거
    jeus.transaction.loggingRecovery에 사용되는 Resource Factory 관련 로거
    jeus.transaction.otsOTS 관련 로거
    jeus.transaction.recovery트랜잭션 Recovery 작업 내용을 기록하는 로거
  • Security 관련

    구분설명
    jeus.securityJEUS Security 관련 로거
    jeus.security.impl.loginJEUS Security 로그인 서비스 관련 로거
    jeus.security.utilJEUS Security 유틸리티 관련 로거
  • 기타 주요 로거

    구분설명
    jeus.classloaderJEUS 클래스 로딩 관련 로거
    jeus.clusteringJEUS 서버 클러스터링 관련 로거
    jeus.configJEUS 동적 설정 변경 관련 로거
    jeus.connectorJ2EE Connector 관련 로거
    jeus.converterXML 컨버터 관련 로거
    jeus.ddinitDD Initializer 관련 로거
    jeus.deploy애플리케이션 Deploy 관련 로거
    jeus.domain도메인 관련 로거
    jeus.filetransfer설정 파일, 애플리케이션 파일 전송 관련 로거
    jeus.ioJEUS Network I/O Library 관련 로거
    jeus.jdbcJDBC Connection Pool 관련 로거
    jeus.jmxJMX 관련 로거
    jeus.jndiJNDI 관련 로거
    jeus.jnlpJNLP 관련 로거
    jeus.jtmaxJTmax 관련 로거
    jeus.managementJMX MBean Framework 관련 로거
    jeus.netJEUS Network API 관련 로거
    jeus.rmiJEUS RMI 관련 로거
    jeus.schedulerJEUS 스케줄러 관련 로거
    jeus.serviceJEUS 서비스 MBean 관련 로거
    jeus.weldJEUS CDI 관련 로거
    jeus.logger.statusJEUS Asynchronous logger(서버 로거)의 예외를 기록하는 로거

본 절에서는 JEUS에서 로깅에 대한 설정 방법과 Customization 방법 등을 설명한다.

jeus 로거는 설정이 없더라도 기본적으로 존재한다. 그러나 jeus 로거를 제외한 다른 로거들은 설정하지 않으면 상위 로거(jeus 로거)의 핸들러(handler)를 사용해서 로그 메시지를 출력한다. jeus 로거는 설정되지 않으면 파일 핸들러(File Handler)를 사용한다. 따라서 서버에 아무런 로거 설정을 하지 않았다면 서버가 운영되면서 발생하는 로그 메시지는 디폴트 로그 파일에 남게 된다. 이때 로그 레벨(level)은 INFO이다. jeus 로거는 상위 로거의 핸들러를 사용하지 않는다.

참고

서버의 로그 메시지를 콘솔에서 확인하고 싶다면 서버를 부팅할 때 -verbose 옵션을 설정한다. 옵션을 설정하면 Launcher 프로세스가 서버를 부팅시킨 후 종료되지 않고 서버가 shutdown될 때까지 살아있으면서 서버의 로그 메시지를 파이프를 통해 읽어서 콘솔에 출력하는 기능을 한다.

본 절에서는 콘솔 툴과 WebAdmin을 사용해서 서버에 기본적으로 존재하는 jeus 로거에 대한 정보를 확인하는 예를 설명한다.

WebAdmin 사용

Webadmin 서버 설정 화면으로 이동한 후, [Basic] 탭에서 [System Logging] 항목을 선택하면 서버에서 사용하고 있는 로거 목록을 출력한다. 목록에서 정보를 확인하고자 하는 로거를 선택하면 로그 레벨, 핸들러 목록 등을 확인할 수 있다.

콘솔 툴 사용

콘솔 툴에서 다음과 같이 log-level, list-log-handlers 명령어를 수행하면 jeus 로거와 그에 등록된 핸들러에 대한 정보를 확인할 수 있다. 각 명령어의 사용 방법에 대한 자세한 내용은 JEUS Reference 안내서”의 “4.2.3. Server Management 관련 명령어”를 참고한다.

[MASTER]domain1.adminServer>log-level -server server1 jeus
The logger[jeus] information for the server [server1]
Information about the logger[jeus].
================================================================================
Logger Name : jeus
Level : INFO
Use Parent Handlers : false

+---------------------------------------------+----------------+---------------+
|                 Handler Name                |  Handler Type  | Handler Level |
+---------------------------------------------+----------------+---------------+
| jeus.util.logging.ConsoleHandler@1698156408 | ConsoleHandler | ALL           |
| FileHandler                                 | FileHandler    | FINEST        |
+---------------------------------------------+----------------+---------------+
================================================================================

[MASTER]domain1.adminServer>modify-logger -server server1 jeus
Show the current configuration.
The logger[jeus] information for the server [server1]
================================================================================
+---------------------+--------------------------------------------------------+
|         Name        |                          Value                         |
+---------------------+--------------------------------------------------------+
| Level               | INFO                                                   |
| Use Parent Handlers | false                                                  |
| Formatter           | [%d{yyyy.MM.dd HH:mm:ss}] [%l] [%J-%T] [%M-%N] %m      |
+---------------------+--------------------------------------------------------+
================================================================================

[MASTER]domain1.adminServer>list-log-handlers -server server1 jeus
List of Loggers
================================================================================
+-------------------------------------+----------------------------------------+
| Handler Name                        | FileHandler                            |
| Handler Type                        | FileHandlerType                        |
| Handler Level                       | FINEST                                 |
| Filename                            | JeusServer.log                         |
| Enable Rotation                     | true                                   |
| Rotation Directory                  | ${SERVER_HOME}/logs                    |
| Valid Day                           | 1                                      |
| Buffer Size                         | 1024                                   |
| Append Logs                         | true                                   |
+-------------------------------------+----------------------------------------+
================================================================================

콘솔 툴을 통해 jeus 로거 정보를 확인했을 때 콘솔 핸들러가 보여지는 경우는 2가지이다.

  • 서버를 부팅할 때 실행 스크립트에 -verbose 옵션을 설정한 경우

  • 서버가 부팅 중인 경우

서버를 부팅할 때 -verbose 옵션을 설정한 경우는 Launcher 프로세스로 콘솔 로그가 출력된다. 또한 서버가 부팅 중인 경우에도 Launcher 프로세스를 통해서 로그 메시지가 콘솔 화면에 출력될 수 있다.

콘솔 툴이나 WebAdmin을 통해서 런타임(runtime)에 동적으로 로거나 핸들러를 추가, 삭제, 변경할 수 있다.

WebAdmin 사용

다음은 WebAdmin에서 로거 설정 화면에서 서버에 로거를 동적으로 추가하는 과정에 대한 설명이다.

참고

WebAdmin을 사용한 로거의 변경과 삭제 방법은 위에서 설명한 로거의 추가 방법과 비슷하므로 본 안내서에서는 자세한 설명을 생략한다

예를 들어, 서버에 jeus.config 로거를 추가하고, 레벨을 FINE으로 설정한 후, 파일 핸들러 1개를 추가하고자 하는 경우 다음과 같은 과정을 통해 설정을 수행한다.

  1. WebAdmin 메인 화면에서 마스터 서버를 선택하여 설정 화면을 펼친다.

  2. 설정 화면 상단 탭에서 [Server]를 선택하여 서버 목록 화면으로 이동한 후, 목록에서 로거를 추가할 서버를 선택하여 서버 설정 화면을 펼친다.

  3. 서버 설정 화면 상단 탭에서 [Basic]을 선택한 후, [System Logging] 항목을 선택하면 로거 목록이 나타난다.

  4. 새로운 로거를 추가하기 위해 [추가] 버튼을 선택하면 로거 설정 팝업 화면이 나타난다.

  5. 로거 설정 팝업 화면에서 로거의 이름(Name)에 'jeus.config'을 입력하고 레벨(Level) 항목을 'FINE'으로 선택한 후 [추가] 버튼을 클릭한다.

  6. 로거 목록에 'jeus.config' 로거가 추가되어 있는지 확인한 후, 파일 핸들러를 추가하기 위해 로거 이름을 선택하여 로거 상세 화면을 펼친다.

  7. 로거 상세 화면에서 파일 핸들러를 추가하기 위해 [추가] 버튼을 선택한 후, 드롭 다운 메뉴에서 'File Handler'를 선택하면 파일 핸들러 설정 팝업 창이 나타난다.

  8. 파일 핸들러 설정 팝업 창에서 이름(Name) 항목을 'fileHandler'로 설정하고, [추가] 버튼을 클릭한다.

  9. 로거 상세 화면에 추가한 파일 핸들러 이름이 표시되는지 확인한다.

콘솔 툴 사용

콘솔 툴에서 add-logger, modify-logger, remove-logger 명령어를 사용해서 로깅 설정을 동적으로 변경할 수 있다. 각 명령어에 대한 자세한 내용은 JEUS Reference 안내서”의 “4.2.3. Server Management 관련 명령어”를 참고한다.

list-loggers 명령어를 사용하여 현재 설정되어 있는 로거 정보를 확인할 수 있다.

[MASTER]domain1.adminServer>list-loggers server1
List of Loggers
================================================================================
+-------------+-------+---------------+--------+-------------------------------+
| Logger Name | Level |   Use Parent  | Filter |           Formatter           |
|             |       |   Handlers    |        |                               |
+-------------+-------+---------------+--------+-------------------------------+
| jeus        | INFO  | false         |        | [%d{yyyy.MM.dd HH:mm:ss}][%l] |
|             |       |               |        | [%J-%T] [%M-%N] %m            |
+-------------+-------+---------------+--------+-------------------------------+
================================================================================

[MASTER]domain1.adminServer>add-logger -server server1 jeus.ejb -level FINEST
Successfully performed the ADD operation for The logger for the server(server1)..
Check the results using "list-loggers or add-logger".

[MASTER]domain1.adminServer>add-logger -server server1 jeus.ejb.clustering -level FINEST
Successfully performed the ADD operation for The logger for the server(server1)..
Check the results using "list-loggers or add-logger".

[MASTER]domain1.adminServer>list-loggers server1
List of Loggers
================================================================================
+--------------+--------+--------------+--------+------------------------------+
|  Logger Name |  Level |  Use Parent  | Filter |           Formatter          |
|              |        |   Handlers   |        |                              |
+--------------+--------+--------------+--------+------------------------------+
| jeus         | INFO   | false        |        | [%d{yyyy.MM.dd               |
|              |        |              |        |HH:mm:ss}][%l] [%J-%T]        |
|              |        |              |        |[%M-%N] %m                    |
+--------------+--------+--------------+--------+------------------------------+
| jeus.ejb     | FINEST | true         |        | [%d{yyyy.MM.dd               |
|              |        |              |        |HH:mm:ss}][%l] [%J-%T]        |
|              |        |              |        |[%M-%N] %m                    |
+--------------+--------+--------------+--------+------------------------------+
| jeus.ejb.clu | FINEST | true         |        | [%d{yyyy.MM.dd               |
|stering       |        |              |        |HH:mm:ss}][%l] [%J-%T]        |
|              |        |              |        |[%M-%N] %m                    |
+--------------+--------+--------------+--------+------------------------------+
================================================================================

[MASTER]domain1.adminServer>modify-logger -server server1 jeus.ejb.clustering -level FINE
Successfully performed the MODIFY operation for The logger[jeus.ejb.clustering] information for the server [server1].
Check the results using "modify-logger".

[MASTER]domain1.adminServer>list-loggers server1
List of Loggers
================================================================================
+--------------+--------+--------------+--------+------------------------------+
|  Logger Name |  Level |  Use Parent  | Filter |           Formatter          |
|              |        |   Handlers   |        |                              |
+--------------+--------+--------------+--------+------------------------------+
| jeus         | INFO   | false        |        | [%d{yyyy.MM.dd               |
|              |        |              |        |HH:mm:ss}][%l] [%J-%T]        |
|              |        |              |        |[%M-%N] %m                    |
+--------------+--------+--------------+--------+------------------------------+
| jeus.ejb     | FINEST | true         |        | [%d{yyyy.MM.dd               |
|              |        |              |        |HH:mm:ss}][%l] [%J-%T]        |
|              |        |              |        |[%M-%N] %m                    |
+--------------+--------+--------------+--------+------------------------------+
| jeus.ejb.clu | FINE   | true         |        | [%d{yyyy.MM.dd               |
|stering       |        |              |        |HH:mm:ss}][%l] [%J-%T]        |
|              |        |              |        |[%M-%N] %m                    |
+--------------+--------+--------------+--------+------------------------------+
================================================================================

[MASTER]domain1.adminServer>remove-logger -server server1 jeus.ejb
Successfully performed the REMOVE operation for The logger for the server(server1)..
Check the results using "list-loggers or remove-logger".

[MASTER]domain1.adminServer>list-loggers server1
List of Loggers
================================================================================
+--------------+-------+--------------+--------+-------------------------------+
|  Logger Name | Level |  Use Parent  | Filter |           Formatter           |
|              |       |   Handlers   |        |                               |
+--------------+-------+--------------+--------+-------------------------------+
| jeus         | INFO  | false        |        | [%d{yyyy.MM.dd HH:mm:ss}][%l] |
|              |       |              |        | [%J-%T] [%M-%N] %m            |
+--------------+-------+--------------+--------+-------------------------------+
| jeus.ejb.clu | FINE  | true         |        | [%d{yyyy.MM.dd HH:mm:ss}][%l] |
|stering       |       |              |        | [%J-%T] [%M-%N] %m            |
+--------------+-------+--------------+--------+-------------------------------+
================================================================================
      

JEUS에서는 표준 출력과 표준 에러를 JEUS 로그 형식으로 출력하는 기능을 제공한다. JEUS에서 기본으로 사용하는 포맷을 이용하여 jeus 로거와 비슷한 형식으로 표준 출력과 표준 에러를 출력할 수 있다.

본 절에서는 WebAdmin이나 콘솔 툴을 통한 표준 출력과 표준 에러를 JEUS 로그 형식으로 출력하는 설정 방법에 대해 설명한다.

WebAdmin 사용

  1. WebAdmin 메인 화면에서 마스터 서버를 선택하여 설정 화면을 펼친다.

  2. 설정 화면 상단 탭에서 [서버]를 선택하여 서버 목록 화면으로 이동한 후, 목록에서 설정을 변경할 서버를 선택하여 서버 설정 화면을 펼친다.

  3. 서버 설정 화면 상단 탭에서 [Basic]을 선택한 후, [Basic info] 항목을 선택하여 서버 기본 정보 화면을 펼친다.

  4. 서버 기본 정보 화면에서 [수정] 버튼을 선택하여 수정 모드로 전환한 후, 하단에 위치한 [고급 선택사항]을 선택하여 고급 선택사항들을 펼친다.

  5. 고급 선택사항에 표시되어 있는 항목 중 'Log Stdout To Raw Format' 항목을 수정하여 표준 출력과 표준 에러를 어떤 방식으로 출력할지 선택할 수 있다.

참고

'Log Stdout To Raw Format' 항목의 기본값은 true로 표준 출력과 표준 에러를 그대로 출력한다. 표준 출력과 표준 에러를 JEUS 로그 형식으로 출력하려면 이 값을 false로 설정한다. WebAdmin에서는 이 항목을 체크 해제하면 된다.

콘솔 툴 사용

콘솔 툴에서 표준 출력과 표준 에러를 JEUS 로그 형식으로 출력하는 설정에 대한 예제이다.

[MASTER]domain1.adminServer>modify-server server1
Shows the current configuration.
server (server1)
================================================================================
+--------------------------------+---------------------------------------------+
| JVM Configs                    | -Xmx1024m -XX:MaxMetaspaceSize=512m         |
| Action On Resource Leak        | WARNING                                     |
| Stdout to Raw Format           | true                                        |
| MEJB                           | false                                       |
| Class FTP                      | false                                       |
| Server Log Home Directory      | none                                        |
+--------------------------------+---------------------------------------------+
================================================================================

[MASTER]domain1.adminServer>modify-server server1 -logStdoutToRawFormat false
Successfully performed the MODIFY operation for server (server1).
Check the results using "list-servers server1 or modify-server server1".

[MASTER]domain1.adminServer>list-servers server1
List of Editable Servers
================================================================================
+-----+--------+-----+---------+---------+---------+-----+-----+---------+-----+
| Ser |  Base  | Node|   JVM   |  Action |  Stdout | MEJB| Cla |  Server | Type|
| ver | Listen |     | Configs |   On    | to Raw  |     | ss  |Log Home |     |
|     |Address |     |         |Resource | Format  |     | FTP | Directo |     |
|     | /Port  |     |         |   Leak  |         |     |     |   ry    |     |
+-----+--------+-----+---------+---------+---------+-----+-----+---------+-----+
| ser |0.0.0.0 |     | -Xmx102 | Warning | false   | fal | fal | none    | ser |
|ver1 |/ 9836  |     |4m       |         |         |se   |se   |         |ver  |
|     |        |     |-XX:MaxM |         |         |     |     |         |     |
|     |        |     |etaspace |         |         |     |     |         |     |
|     |        |     |Size=512m|         |         |     |     |         |     |
+-----+--------+-----+---------+---------+---------+-----+-----+---------+-----+
================================================================================
      

이 기능을 사용하면 표준 출력은 다음과 같은 포맷으로 출력된다.

[%d{yyyy.MM.dd HH:mm:ss}] [%l] [%J-%T] [%M-%N] [STDOUT/STDERR] %m
항목설명
%d{yyyy.MM.dd HH:mm:ss}로그 이벤트의 날짜를 출력한다. 뒤에 '{}' 에 추가하는 DATE_FORMAT에는 출력하고자하는 날짜의 형식을 입력한다. DATE_FORMAT의 Formatting 방식은 JDK의 SimpleDateFormat 방식을 따른다.
%l

로그 이벤트의 로그 레벨이 그에 매핑되는 숫자로 출력된다.

  • 0 : SEVERE

  • 1 : WARNING

  • 2 : INFO

  • 3 : CONFIG

  • 4 : FINE

  • 5 : FINER

  • 6 : FINEST

  • 7 : ALL

%J로그 메시지를 로깅하는 프로세스가 출력된다. Thread 정보를 나타낸다.
%T로그 메시지를 로깅하는 Thread번호가 출력된다. Thread 정보가 같은 로그 메시지는 같은 Thread에서 로깅한 것이다.
%M로그를 출력하는 모듈의 이름이 출력된다. 각 모듈에 해당하는 이름은 “8.2.7. 로그 메시지 모듈 이름”을 참고한다.
%N출력되는 로그 이벤트의 메시지 번호를 출력한다.
%mSystem.out이나 System.err를 통해 출력할 메시지이다. 만약 표준 출력이나 표준 에러에 대한 로그이면 메시지 앞에 [STDOUT] 혹은 [STDERR] 와 같은 메시지가 추가되어 출력된다.

  • STDOUT : 로깅하려는 메시지가 표준 출력인 경우이다.

  • STDERR : Exception과 같은 표준 에러인 경우이다.

  • UNKNOWN : 알 수 없는 경우이다.

%c로그 메시지를 로깅하는 로거의 이름을 출력한다.

WebAdmin이나 콘솔 툴을 통해 로거나 핸들러를 추가, 삭제, 수정할 수 있고 이는 모두 동적 반영 가능하다. 즉, 운영 중인 서버를 재기동하지 않아도 변경한 설정 내용이 적용될 수 있다.

참고

로거에서 동적 반영 가능한 설정은 레벨(level)과 상위 핸들러를 사용할지 여부(use-parent-handlers)이다. 핸들러에서는 레벨(level) 만 동적반영 가능하다. 또한 콘솔 툴 명령어로는 파일 핸들러만 추가, 변경이 가능하다.

WebAdmin 사용

로거 추가는 다음과 같은 과정을 통하여 수행한다.

  1. WebAdmin 메인 화면에서 마스터 서버를 선택하여 설정 화면을 펼친다.

  2. 설정 화면 상단 탭에서 [Server]를 선택하여 서버 목록 화면으로 이동한 후, 목록에서 로거를 추가할 서버를 선택하여 서버 설정 화면을 펼친다.

  3. 서버 설정 화면 상단 탭에서 [Basic]을 선택한 후, [System Logging] 항목을 선택하면 로거 목록이 나타난다.

  4. 로거를 추가하기 위해 [추가] 버튼을 클릭한다.

  5. 새로운 로거를 추가하기 위해 [추가] 버튼을 선택하면 로거 설정 팝업 화면이 나타난다.

  6. 로거 설정 팝업 화면에서 필요한 설정을 입력한 후 [추가] 버튼을 선택하면 로거가 추가된다.

다음은 설정 항목에 대한 설명이다.

항목설명
Name로거의 이름을 설정한다.
Level

로거의 레벨(level)을 설정한다. 이 레벨 이하의 메시지만 로거를 통해 출력된다. Logging API의 레벨인 다음의 값이 설정된다.

  • SEVERE

  • WARNING

  • INFO (기본값)

  • CONFIG

  • FINE

  • FINER

  • FINEST

  • ALL

Use Parent Handlers

로거가 자신의 핸들러뿐만 아니라 상위 로거의 핸들러를 사용할 것인지의 여부를 설정한다.

기본값은 true이지만 jeus 로거의 경우는 JEUS의 최상위 로거이기 때문에 false로 설정한다. 또한 자신의 핸들러를 설정하지 않고 이 값을 false로 설정할 경우 상위 핸들러를 사용할 수 있도록 이 값을 true로 변경한다.

Filter Class로거가 로그 메시지를 핸들러에게 보내기 전에 수행하는 필터링(filtering)에 사용할 클래스를 지정한다. 여기에 지정된 클래스는 lib/application 디렉터리의 JAR 파일 내에 포함되어 있어야 한다.
Formatter Pattern

로거가 로그 메시지를 핸들러에 보내기 전에 로그 메시지를 포맷팅하는데 이때 사용하는 포맷 패턴을 지정한다.

(기본값: [%d{yyyy.MM.dd HH:mm:ss}] [%l] [%J-%T] [%M-%N] %m)

Handlers로거가 사용할 핸들러를 지정한다. 이 항목이 설정되어 있지 않다면 jeus 로거의 경우는 파일 핸들러(File Handler)가 기본적으로 사용되고, 그 외의 jeus 하위 로거들은 jeus 로거의 핸들러를 사용한다.

참고

JEUS 4.x에서 사용하던 로그 레벨인 FATAL, NOTICE, INFORMATION, DEBUG 레벨은 JEUS 7부터는 사용할 수 없다.

Handler에는 파일 핸들러, SMTP 핸들러, 소켓 핸들러, 사용자 핸들러가 있으며 각 핸들러에 대해 다음과 같은 하위 항목들이 있다.

JEUS가 시작될 때 또는 JEUS 운영 중에 설정한 시간이 되거나 파일 사이즈를 넘으면 자동으로 이전에 로깅하던 파일의 이름은 변경하고 새로 출력할 로그들은 원래의 로그 파일에 계속 로깅할 수 있도록 로그 파일 로테이션(Log File Rotation) 기능을 제공한다.

WebAdmin 사용

다음은 WebAdmin을 통해 File Handler의 로그 파일 로테이션을 설정하는 방법에 대한 설명이다.

'Valid Day', 'Valid Hour', 'Valid Size'의 3개 항목의 설정에 따라 로테이션한다. 로테이션의 조건이 되는 3개의 항목 중 아무것도 설정되어 있지 않으면 매일 00시 00분이 되면 로깅하던 파일의 이름을 변경해서 백업하고 이 후에 로깅되는 파일은 이전에 로깅하던 파일에 새로 로깅한다.

로그 파일 로테이션 설정은 다음과 같은 과정을 통해 수행한다.

  1. WebAdmin 메인 화면에서 마스터 서버를 선택하여 설정 화면을 펼친다.

  2. 설정 화면 상단 탭에서 [서버]를 선택하여 서버 목록 화면으로 이동한 후, 목록에서 로거를 추가할 서버를 선택하여 서버 설정 화면을 펼친다.

  3. 서버 설정 화면 상단 탭에서 [Basic]을 선택한 후, [System Logging] 항목을 선택하면 로거 목록이 나타난다.

  4. 로거 목록에서 로그 파일 로테이션 설정을 변경할 로거 이름을 선택한다.

  5. 핸들러 목록에서 로그 파일 로테이션 설정을 변경할 File Handler를 선택한 후 설정을 수정한다.