로깅 및 추적
제품에는 제품이 작성하는 메시지를 처리하고 FFDC(First Failure Data Capture) 서비스를 제공하는 통합 로깅 컴포넌트가 포함되어 있습니다.
또한 로깅 컴포넌트는 System.out, System.err, java.util.logging 및 OSGi 로깅에 작성되는 메시지를 캡처합니다. 로깅 컴포넌트는 이 메시지의 처리를 제품이 작성한 기타 메시지와 통합합니다. 로깅 컴포넌트는 JVM 프로세스에 의해 직접 작성되는 메시지(예: -verbose:gc 출력)는 캡처할 수 없습니다.
하나의 서버에 대해 세 개의 기본 로그
파일이 있습니다.
- console.log - JVM 프로세스로부터 경로 재지정된 표준 출력 및 표준 오류가 포함되어 있습니다. 이 콘솔 출력은 사용자가 직접 이용하기 위해 작성됩니다. 기본 consoleLogLevel 구성을 사용하는 경우 콘솔 출력에는 주요 이벤트 및 오류가 포함되어 있습니다. 기본 copySystemStreams 구성을 사용하는 경우 콘솔 출력에는 System.out 및 System.err 스트림에 작성되는 메시지도 포함되어 있습니다. 콘솔 출력에는 JVM 프로세스에 의해 직접 작성되는 메시지(예: -verbose:gc 출력)가 항상 포함되어 있습니다. 이 파일은 server start 명령이 사용되는 경우에만 작성되며 해당 위치는 LOG_DIR 환경 변수를 사용해서만 변경할 수 있습니다. 자세한 정보는 명령행에서 Liberty 프로파일 관리의 내용을 참조하십시오.
- messages.log - 로깅 컴포넌트에 의해 캡처되거나 작성되는 추적 메시지를 제외한 모든 메시지가 포함되어 있습니다. 이 파일에 작성되는 모든 메시지에는 메시지를 작성한 스레드의 ID와 메시지 시간소인 등의 추가적인 정보가 포함되어 있습니다. 이 파일에는 프로세스에 의해 직접 작성되는 메시지는 포함되어 있지 않습니다.
- trace.log - 제품에 의해 캡처되거나 작성되는 모든 메시지가 포함되어 있습니다. 이 파일은 추가적인 추적을 사용으로 설정하는 경우에만 작성됩니다. 이 파일에는 프로세스에 의해 직접 작성되는 메시지는 포함되어 있지 않습니다.
로깅 구성
로깅 컴포넌트는 서버 구성을 통해
제어할 수 있습니다. 로깅 구성의 기본 위치는 server.xml
파일에 있습니다. server.xml 파일이 처리되기 전에
발생하는 문제점을 진단하도록 추적을 구성해야 하는 경우도 있습니다.
이 경우 bootstrap.properties 파일에서 동등한
구성 특성을 지정할 수 있습니다. bootstrap.properties
파일과 server.xml 파일 모두에서 구성 특성이 지정되는
경우에는 server.xml 파일이 처리될 때까지 bootstrap.properties에
있는 값이 사용됩니다. 그런 다음 server.xml 파일에 있는 값이 사용됩니다.
bootstrap.properties 파일과 server.xml
파일에서 동일한 구성 특성에 대해 서로 다른 값을 지정하지 마십시오.
속성 | 동등 특성 | 설명 |
---|---|---|
logDirectory |
|
이 속성은 모든 로그 파일에 대한
디렉토리를 설정합니다(console.log 파일은 제외하고
FFDC는 포함함). 기본적으로, logDirectory는
LOG_DIR 환경 변수로 설정됩니다. 기본 LOG_DIR
환경 변수 경로는 WLP_OUTPUT_DIR/serverName/logs입니다.
문제 방지: logDirectory
속성 대신 LOG_DIR 환경 변수 또는 com.ibm.ws.logging.log.directory
특성을 사용하여 모든 메시지를 작성할 디렉토리를 구성하십시오.
그렇지 않으면 기본적으로 몇몇 메시지가 초기에 logs
디렉토리에서 작성된 후 나머지 메시지가 사용자의 구성에 따라 지정된
디렉토리에 작성됩니다. logDirectory 속성을 사용하여
서버가 실행 중인 동안 지정된 디렉토리에 로그를 동적으로 업데이트할 수
있습니다.
|
maxFileSize |
|
로그 파일이 롤링되기 전에 도달할 수 있는
최대 크기(MB)입니다. Liberty 프로파일 런타임은 크기 기반 로그 롤링만
수행합니다. 이 속성을 사용하지 않도록 설정하려면 값을 0으로 설정하십시오.
최대 파일 크기는 추정치입니다.기본적으로 값은 20입니다. 참고: maxFileSize는
console.log 파일에 적용되지 않습니다.
|
maxFiles |
|
적용된 최대 파일 크기가 존재하는 경우
이 설정은 보관되는 각 로그 파일의 수를 판별하는 데 사용됩니다.
이 설정은 특정 날짜에 발생한 예외를 요약하는 예외 로그 수에도 적용됩니다.
이 수가
10인 경우, 10개의 메시지 로그, 10개의 추적 로그, 10개의
예외 요약이 ffdc/ 디렉토리에 있을 수 있습니다. 기본적으로 값은 2입니다. 참고: maxFiles는
console.log 파일에 적용되지 않습니다.
|
consoleLogLevel |
|
이 필터는
console.log 파일로 이동하는 메시지의 세분성을 제어합니다.
올바른 값은 INFO, AUDIT, WARNING, ERROR, OFF입니다. 기본적으로 레벨은 AUDIT입니다. ![]() |
copySystemStreams |
|
true인 경우 System.out 및 System.err 스트림에 작성되는 메시지가 console.log에 복사됩니다. false인 경우 해당 메시지는 구성된 로그(예: messages.log 또는 trace.log)에 작성되지만 console.log에 복사되지는 않습니다. 기본값은 true입니다. |
messageFileName |
|
메시지 로그는 messages.log의 기본 이름을 갖습니다. 이 파일은 항상 존재하며 System.out 및 System.err 외에 INFO와 기타(AUDIT, WARNING, ERROR, FAILURE) 메시지를 포함합니다. 이 로그에는 시간소인 및 발행 스레드 ID도 포함됩니다. 로그 파일이 롤오버되는 경우 이전 로그 파일의 이름은 messages_timestamp.log의 형식을 갖습니다. |
suppressSensitiveTrace | 서버 추적은 유형이 지정되지 않은 데이터(예: 네트워크 연결을 통해 수신된 바이트)를 추적할 때 민감한 데이터를 노출할 수 있습니다. 이 속성이 true로 설정되면 중요한 정보가 로그와 추적 파일에 공개될 가능성이 없어집니다. 기본값은 false입니다. | |
traceFileName |
|
추가 또는 자세한 추적이 사용 가능한 경우에만 trace.log 파일이 작성됩니다. stdout는 특수 값으로 인식되어 원래 표준 출력 스트림으로 직접 추적하게 됩니다. |
traceSpecification |
|
추적 문자열은 선택적으로 사용 가능한 추적에 사용됩니다. 기본값은 *=info입니다. |
traceFormat |
|
이 속성은 추적 로그의 형식을 제어합니다. Liberty 프로파일의 기본 형식은 ENHANCED입니다. BASIC 및 ADVANCED 형식을 전체 프로파일에서와 같이 사용할 수도 있습니다. |
![]() |
|
hideMessage 속성을 사용하여
console.log 및 message.log 파일에서 숨길 메시지를 구성할 수 있습니다.
메시지가 숨겨지도록 구성된 경우 해당 메시지는 trace.log 파일로
경로 재지정됩니다. ![]() |
개발자 도구의 서버 구성 보기에 있는 로깅 및 추적을 선택하거나 다음과
같이 서버 구성 파일에 로깅 요소를 추가하여 서버 구성 파일에 로깅 특성을 설정할 수 있습니다.
<logging traceSpecification="*=audit:com.myco.mypackage.*=finest"/>
로그 세부사항 레벨
스펙의 형식은 다음과 같습니다.
<component> = <level>
여기서 <component>는 로그 세부사항 레벨을 설정할 컴포넌트이고 <level>은 올바른 로거 레벨(off, fatal, severe, warning, audit, info, config, detail, fine, finer, finest, all) 중 하나입니다. 여러 로그 세부사항 레벨 스펙은 콜론(:)으로 구분하십시오.
주의: 지정된 로거의 경우 해당 로거에
적용되는 가장 구체적인 추적 스펙에 의해 레벨이 판별됩니다.
컴포넌트는 Java™ 패키지 및
클래스에 해당하거나 Java 패키지의
콜렉션에 해당합니다. 지정된 컴포넌트에 의해 포함되는 모든 패키지의
모든 클래스를 포함하는 컴포넌트를 표시하려면 별표(*)를 와일드카드로
사용하십시오. 예:
- *
- 제품 시스템 코드 및 고객 코드를 포함하여 애플리케이션 서버에서 실행 중인 모든 추적 가능 코드를 지정합니다.
- com.ibm.ws.*
- 패키지 이름이 com.ibm.ws로 시작하는 모든 클래스를 지정합니다.
- com.ibm.ws.classloader.JarClassLoader
- JarClassLoader 클래스만 지정합니다.
버전 6 이상 로깅 레벨 | 컨텐츠/중요도 |
---|---|
off | 로깅이 꺼져 있습니다. |
fatal | 태스크를 계속할 수 없고 컴포넌트, 애플리케이션 및 서버가 작동할 수 없습니다. |
severe | 태스크를 계속할 수 없지만 컴포넌트, 애플리케이션 및 서버는 계속 작동할 수 있습니다. 이 레벨은 임박한 복구 불가능한 오류도 표시합니다. |
warning | 잠재적 오류 또는 임박한 오류입니다. 이 레벨은 진행형 장애(예: 자원의 잠재적 누수)도 표시할 수 있습니다. |
audit | 서버 상태 또는 자원에 영향을 미치는 중요한 이벤트 |
info | 전체 태스크 진행상태를 요약하는 일반 정보 |
config | 구성 변경 또는 상태 |
detail | 하위 태스크 진행상태에 대해 자세히 설명하는 일반 정보 |
fine | 추적 정보 - 일반 추적 + 메소드 입력, 종료 및 리턴값 |
finer | 추적 정보 - 자세한 추적 |
finest | 추적 정보 - 문제점을 디버그하는 데 필요한 모든 세부사항이 포함된 자세한 추적 |
all | 모든 이벤트가 로그됩니다. 사용자 정의 레벨을 작성하는 경우 all은 해당 레벨을 포함하며 finest보다 자세한 추적을 제공할 수 있습니다. |
console.log 파일은 다른 로그 파일과
동일한 관리 레벨을 갖지 않습니다. 사용자가 변경할 수 있는
유일한 특성은 consoleLogLevel입니다. console.log
파일의 크기 증가에 관심이 있는 경우, console.log 파일을 사용 안함으로
설정하고 대신 메시지 로그 파일을 사용할 수 있습니다. 다른 형식을 갖는
동일한 데이터가 메시지 로그 파일에 기록되며, maxFileSize 및 maxFiles
속성을 사용하여 메시지 로그 파일의 크기와 수를 제어할 수 있습니다. 예를 들어, 다음 bootstrap.properties
파일은 하나의 비어 있는 console.log 파일과
최대 세 개의 롤링 1MB loggingMessages.log 파일을 생성합니다.
하지만 기본 JVM으로부터의 메시지는 여전히 console.log에
작성될 수 있습니다. bootstrap.properties 파일에서의 설정은
메시지 로그 파일이 작성되기 전에 적용되므로 메시지 로그 파일은 기본값인
messages.log가 아니라 loggingMessages.log로
초기에 작성됩니다.
com.ibm.ws.logging.max.file.size=1
com.ibm.ws.logging.max.files=3
com.ibm.ws.logging.console.log.level=OFF
com.ibm.ws.logging.message.file.name=loggingMessages.log
서버가 다시 시작될 때 console.log
파일이 재설정됩니다. 참고: 모든 플랫폼에서, 로그는 기본 시스템 인코딩에 작성됩니다.
Windows 시스템에는 OEM 코드 페이지와 ANSI 코드 페이지라는 두 가지 유형의 인코딩이 있습니다. OEM 코드 페이지는 콘솔 출력에 사용되며, ANSI 코드 페이지는 파일을 읽고 쓰는 데 사용됩니다. console.log 파일은 OEM 코드 페이지를 사용하고 기타 모든 로그는 ANSI 코드 페이지를 사용합니다.
다른 모든 플랫폼에서, 모든 로그 파일은 기본 인코딩을 사용합니다.