12.3. 로깅 정보
JBoss EAP 로깅
하위 시스템은 로그 카테고리 및 로그 처리기 시스템을 사용하여 구성됩니다. 로그 카테고리는 캡처할 메시지를 정의합니다. 로그 처리기는 해당 메시지를 처리하는 방법을 정의합니다(예: 디스크에 쓰거나 콘솔에 전송하는 방법).
로깅 프로필을 사용하면 고유하게 이름이 지정된 로깅 구성 세트를 다른 로깅 구성과 무관하게 애플리케이션에 할당하고 할당할 수 있습니다. 로깅 프로필 구성은 기본 로깅
하위 시스템과 거의 동일합니다.
12.3.1. Root Logger
JBoss EAP 루트 로거는 로그 카테고리에서 캡처하지 않는 서버로 전송된 지정된 로그 수준 이상의 모든 로그 메시지를 캡처합니다.
기본적으로 루트 로거는 콘솔과 주기적인 로그 처리기를 사용하도록 구성됩니다. 정기 로그 처리기는 server.log
파일에 기록하도록 구성됩니다. 이 파일은 종종 서버 로그라고 합니다.
자세한 내용은 루트 로거 구성을 참조하십시오.
12.3.2. 로그 카테고리
로그 카테고리는 캡처할 로그 메시지 세트와 메시지를 처리할 하나 이상의 로그 처리기를 정의합니다.
캡처할 로그 메시지는 origin 및 log 수준의 지정된 Java 패키지로 정의됩니다. 해당 패키지 및 해당 로그 수준 이상의 클래스의 메시지는 로그 카테고리에 의해 캡처되고 지정된 로그 처리기로 전송됩니다.
로그 카테고리는 일반적으로 Java 패키지 및 클래스 이름이지만 Logger.getLogger(LOGGER_NAME)
메서드에서 지정하는 모든 이름일 수 있습니다.
로그 카테고리는 선택적으로 자체 처리기 대신 루트 로거의 로그 처리기를 사용할 수 있습니다.
자세한 내용은 로그 카테고리 구성 을 참조하십시오.
12.3.3. 로그 처리기
로그 처리기는 캡처된 로그 메시지가 기록되는 방식을 정의합니다. 사용 가능한 로그 처리기 유형은 console,file, periodic , size ,periodic size,periodic size,syslog,custom, async 입니다.
활성화하려면 로그 처리기를 하나 이상의 로거에 추가해야 합니다.
로그 처리기 유형
- 콘솔
-
콘솔 로그 처리기는 호스트 운영 체제의 표준 아웃(
stdout
) 또는 표준 오류(stderr
) 스트림에 로그 메시지를 씁니다. 이러한 메시지는 JBoss EAP가 명령줄 프롬프트에서 실행되면 표시됩니다. 콘솔 로그 처리기의 메시지는 표준 출력 또는 표준 오류 스트림을 캡처하도록 운영 체제를 구성하지 않는 한 저장되지 않습니다. - 파일
- 파일 로그 처리기는 지정된 파일에 로그 메시지를 씁니다.
- 주기
- 주기적인 로그 처리기는 지정된 기간이 경과될 때까지 이름이 지정된 파일에 로그 메시지를 씁니다. 시간 기간이 전달되면 지정된 타임스탬프를 추가하여 파일의 이름을 바꾸고 처리기는 원래 이름을 사용하여 새로 생성된 로그 파일에 계속 씁니다.
- 크기
- 크기 로그 처리기는 파일이 지정된 크기에 도달할 때까지 이름이 지정된 파일에 로그 메시지를 씁니다. 파일이 지정된 크기에 도달하면 숫자 접미사로 이름이 변경되고 처리기는 원래 이름을 사용하여 새로 생성된 로그 파일에 계속 씁니다. 각 크기 로그 처리기는 이 방식으로 보관할 최대 파일 수를 지정해야 합니다.
- 주기 크기
주기적인 크기 로그 처리기는 파일이 지정된 크기에 도달 하거나 지정된 기간이 경과할 때까지 이름이 지정된 파일에 로그 메시지를 씁니다. 그런 다음 파일의 이름이 변경되고 처리기는 원래 이름으로 새로 생성된 로그 파일에 계속 씁니다.
이는 주기적 및 크기 로그 처리기의 조합이며 결합된 속성을 지원합니다.
- Syslog
- syslog 처리기는 메시지를 원격 로깅 서버로 보내는 데 사용할 수 있습니다. 이를 통해 여러 애플리케이션이 동일한 서버로 로그 메시지를 보낼 수 있으며, 여기에서 모두 함께 구문 분석할 수 있습니다.
- 사용자 지정
-
사용자 지정 로그 처리기를 사용하면 구현된 새 유형의 로그 처리기를 구성할 수 있습니다. 사용자 지정 처리기는
java.util.logging.Handler
를 확장하고 모듈에 포함된 Java 클래스로 구현해야 합니다. Log4J appender를 사용자 지정 로그 처리기로 사용할 수도 있습니다. - Async
- 비동기 로그 처리기는 하나 이상의 다른 로그 처리기에 대한 비동기 동작을 제공하는 래퍼 로그 처리기입니다. 이 기능은 대기 시간이 길거나 네트워크 파일 시스템에 로그 파일 쓰기와 같은 기타 성능 문제가 있을 수 있는 로그 처리기에 유용합니다.
이러한 각 로그 처리기 구성에 대한 자세한 내용은 로그 처리기 구성 섹션을 참조하십시오.
12.3.4. 로그 수준
로그 수준은 로그 메시지의 특성 및 심각도를 나타내는 열거된 값입니다. 개발자는 메시지를 보내는 데 선택한 로깅 프레임워크의 적절한 방법을 사용하여 지정된 로그 메시지의 수준을 지정할 수 있습니다.
JBoss EAP는 지원되는 애플리케이션 로깅 프레임워크에서 사용하는 모든 로그 수준을 지원합니다. 가장 일반적으로 사용되는 로그 수준은 TRACE
,DEBUG
,INFO
,WARN
,ERROR
및 FATAL
입니다.
로그 수준은 로그 카테고리 및 핸들러에서 담당하는 메시지를 제한하는 데 사용됩니다. 각 로그 수준에는 다른 로그 수준에 대한 상대적 순서를 나타내는 숫자 값이 할당됩니다. 로그 카테고리 및 핸들러에는 로그 수준이 할당되며 해당 수준 이상의 로그 메시지만 처리합니다. 예를 들어 WARN 수준이 있는 로그 처리기는 수준
,WARN
ERROR
및 FATAL
의 메시지만 기록합니다.
지원되는 로그 수준
로그 수준 | 현재의 | 설명 |
---|---|---|
ALL | Integer.MIN_VALUE | 모든 로그 메시지를 제공합니다. |
BESTST | 300 | - |
FINER | 400 | - |
TRACE | 400 |
|
DEBUG | 500 |
|
OK | 500 | - |
CONFIG | 700 | - |
INFO | 800 |
|
WARN | 900 |
|
경고 | 900 | - |
ERROR | 1000 |
|
심각 | 1000 | - |
FATAL | 1100 |
|
OFF | Integer.MAX_VALUE | 로그 메시지를 표시하지 않습니다. |
ALL
은 가장 낮은 로그 수준이며 모든 로그 수준의 메시지를 포함합니다. 이는 가장 많은 로깅을 제공합니다.
FATAL
은 가장 높은 로그 수준이며 해당 수준의 메시지만 포함합니다. 이는 최소 로깅 양을 제공합니다.
12.3.5. 로그 포맷
로그 포맷터는 해당 처리기의 로그 메시지 모양을 정의합니다. java.util.logging.Formatter
클래스를 기반으로 구문을 사용하는 문자열입니다.
예를 들어 기본 구성에서는 다음과 같은 로그 포맷터 문자열을 사용하여 서버 로그에 메시지를 로깅합니다. %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%t) %s%e%e%n
. 그러면 아래에 표시된 것과 같은 로그 메시지가 생성됩니다.
2016-03-18 15:49:32,075 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
로그 포맷을 구성하는 방법에 대한 자세한 내용은 이름이 지정된 패턴 형식 구성 또는 사용자 지정 로그 포맷 구성 을 참조하십시오.
로그 포맷터 문자열에 사용되는 구문은 아래 표를 참조하십시오.
로그 형식 구문
기호 | 설명 |
---|---|
%c | 로깅 이벤트의 범주입니다. |
%p | 로그 항목의 수준(INFO, DEBUG 등). |
%P | 로그 항목의 지역화된 수준입니다. |
%d |
현재 날짜/시간(yyy |
%r | 로그가 초기화된 이후의 상대 시간(밀리초)입니다. |
%z |
날짜( |
%k | 로그 메시지의 현지화에 사용되는 로그 리소스 키입니다. |
%m | 로그 메시지(예외 추적 포함). |
%s | 간단한 로그 메시지(예외 추적 없음). |
%e | 예외 스택 추적(확장된 모듈 정보 없음) |
%E | 예외 스택 추적(확장 모듈 정보 포함). |
%t | 현재 스레드의 이름입니다. |
%n | 줄 바꿈 문자입니다. |
%C | 로그 메서드를 호출하는 코드의 클래스입니다(낮음). |
%F | 로그 메서드를 호출하는 클래스의 파일 이름입니다(낮음). |
%l | 로그 메서드(아래)를 호출하는 코드의 소스 위치입니다. |
%L | 로그 메서드를 호출하는 코드의 행 번호입니다(낮음). |
%M | 로그 메서드를 호출하는 코드의 메서드입니다. |
%x | 중첩 진단 컨텍스트입니다. |
%X | 메시지 진단 컨텍스트입니다. |
%% |
리터럴 백분율( |
12.3.6. 필터 표현식
filter-spec
특성을 사용하여 구성된 필터 표현식은 다양한 기준에 따라 로그 메시지를 기록하는 데 사용됩니다. 필터 검사는 항상 포맷되지 않은 원시 메시지에서 수행됩니다. 로거 또는 처리기에 대한 필터를 포함할 수 있지만 로거 필터는 처리기에 배치된 필터보다 우선합니다.
루트 로거에 대해 지정된 필터 사양
은 다른 로거에 상속되지 않습니다. 대신 처리기당 필터 사양
을 지정해야 합니다.
필터 표현식 | 설명 |
---|---|
accept | 모든 로그 메시지를 수락합니다. |
deny | 모든 로그 메시지를 거부합니다. |
not[filter 표현식] | 단일 필터 표현식의 반전된 값을 반환합니다. 예를 들면 다음과 같습니다.
|
all[filter expression] | 쉼표로 구분된 필터 표현식 목록에서 연결 값을 반환합니다. 예를 들면 다음과 같습니다.
|
any[filter expression] | 쉼표로 구분된 필터 표현식 목록에서 하나의 값을 반환합니다. 예를 들면 다음과 같습니다.
|
levelChange[level] | 지정된 수준으로 로그 레코드를 업데이트합니다. 예를 들면 다음과 같습니다.
|
levels[levels] | 쉼표로 구분된 수준 목록에 나열된 수준으로 로그 메시지를 필터링합니다. 예를 들면 다음과 같습니다.
|
levelRange[minLevel,maxLevel] |
지정된 수준 범위 내에서 로그 메시지를 필터링합니다.
|
match["pattern"] | 제공된 정규식을 사용하여 로그 메시지를 필터링합니다. 예를 들면 다음과 같습니다.
|
substitute["pattern","replacement value"] | 패턴(first argument)에 첫 번째 일치 항목을 대체 텍스트(두 번째 인수)로 대체하는 필터입니다. 예를 들면 다음과 같습니다.
|
substituteAll["pattern","replacement value"] | 패턴(first argument)의 모든 일치 항목을 대체 텍스트(두 번째 인수)로 대체하는 필터입니다. 예를 들면 다음과 같습니다.
|
관리 CLI를 사용하여 필터 표현식을 구성할 때 값이 문자열로 올바르게 처리되도록 필터 텍스트에서 쉼표와 따옴표를 이스케이프해야 합니다. 쉼표와 따옴표 앞에 백슬래시(\
)를 사용하고 전체 표현식을 따옴표로 래핑해야 합니다. 다음은 적절하게 이스케이프하는 예제입니다 All("WFLY","YLFW")
.
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=filter-spec, value="substituteAll(\"WFLY\"\,\"YLFW\")")
12.3.7. 암시적 로깅 종속 항목
기본적으로 JBoss EAP 로깅
하위 시스템은 암시적 로깅 API 종속 항목을 배포에 추가합니다. add-logging-api-dependencies
특성을 사용하여 이러한 암시적 종속성이 배포에 추가되는지 여부를 기본적으로 제어할 수 있습니다.
관리 CLI를 사용하여 암시적 로깅 API 종속 항목이 배포에 추가되지 않도록 add-logging-api-dependencies
속성을 false
로 설정할 수 있습니다.
/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false)
로깅
하위 시스템의 암시적 종속 항목에 대한 자세한 내용은 JBoss EAP 개발 가이드의 Implicit 모듈 종속 항목 섹션을 참조하십시오.