11.3. 로깅 하위 시스템 정보

JBoss EAP 로깅 하위 시스템은 로그 카테고리 및 로그 핸들러 의 시스템을 사용하여 구성됩니다. 로그 범주는 캡처할 메시지를 정의합니다. 로그 핸들러는 해당 메시지를 처리하는 방법을 정의합니다(예: 디스크에 작성하거나 콘솔에 전송).

로깅 프로필을 사용하면 고유하게 이름 지정된 로깅 구성 세트를 생성하고 다른 로깅 구성과는 별도로 애플리케이션에 할당할 수 있습니다. 로깅 프로필의 구성은 기본 로깅 하위 시스템과 거의 동일합니다.

11.3.1. 루트 로거

JBoss EAP 루트 로거는 지정된 로그 수준 이상의 모든 로그 메시지를 캡처하여 로그 범주에서 캡처하지 않은 서버로 전송합니다.

기본적으로 루트 로거는 콘솔과 주기적인 로그 핸들러를 사용하도록 구성됩니다. 정기적인 로그 핸들러는 server.log 파일에 작성하도록 구성됩니다. 이 파일은 종종 서버 로그라고 합니다.

자세한 내용은 루트 로거 구성을 참조하십시오.

11.3.2. 로그 카테고리

로그 범주는 캡처할 로그 메시지 집합과 메시지를 처리할 하나 이상의 로그 핸들러를 정의합니다.

캡처할 로그 메시지는 origin 및 로그 수준의 지정된 Java 패키지에 의해 정의됩니다. 해당 패키지의 클래스 및 해당 로그 수준 이상의 클래스의 메시지는 로그 범주에서 캡처되어 지정된 로그 핸들러로 전송됩니다.

참고

일반적으로 로그 카테고리는 Java 패키지 및 클래스 이름이지만 Logger.getLogger(LOGGER_NAME) 메서드에서 지정하는 모든 이름이 될 수 있습니다.

로그 카테고리는 자체 핸들러 대신 루트 로거의 로그 핸들러를 선택적으로 사용할 수 있습니다.

자세한 내용은 로그 카테고리 구성을 참조하십시오.

11.3.3. 로그 핸들러

로그 핸들러는 캡처된 로그 메시지가 기록되는 방법을 정의합니다. 사용 가능한 로그 핸들러 유형은 console,file,periodic,size,periodic size,syslog,custom, async 입니다.

참고

로그 핸들러를 활성화하려면 하나 이상의 로거에 추가해야 합니다.

로그 핸들러 유형
콘솔
콘솔 로그 핸들러는 호스트 운영 체제의 표준 출력, stdout 또는 표준 오류인 stderr, 스트림에 로그 메시지를 작성합니다. 이 메시지는 명령줄 프롬프트에서 JBoss EAP를 실행하면 표시됩니다. 운영 체제가 표준 출력 또는 표준 오류 스트림을 캡처하도록 구성되지 않는 한 콘솔 로그 핸들러의 메시지는 저장되지 않습니다.
파일
파일 로그 핸들러는 로그 메시지를 지정된 파일에 씁니다.
주기
주기적인 로그 핸들러는 지정된 기간이 경과할 때까지 로그 메시지를 명명된 파일에 씁니다. 기간이 경과하면 지정된 타임스탬프를 추가하여 파일의 이름이 바뀝니다. 핸들러는 원래 이름을 사용하여 새로 생성된 로그 파일에 계속 씁니다.
크기
크기 로그 핸들러는 파일이 지정된 크기에 도달할 때까지 명명된 파일에 로그 메시지를 작성합니다. 파일이 지정된 크기에 도달하면 숫자 접미사로 이름이 변경되고 핸들러는 원래 이름을 사용하여 새로 생성된 로그 파일에 계속 씁니다. 각 크기 로그 핸들러는 이러한 방식으로 보관할 최대 파일 수를 지정해야 합니다.
정기적인 크기

주기적인 크기 로그 핸들러는 파일이 지정된 크기 또는 지정된 기간이 경과할 때까지 명명된 파일에 로그 메시지를 씁니다. 그런 다음 파일의 이름이 바뀌고 핸들러는 원래 이름을 사용하여 새로 생성된 로그 파일에 계속 씁니다.

이는 주기적 및 크기 로그 핸들러의 조합이며 결합된 속성을 지원합니다.

syslog
syslog 핸들러는 메시지를 원격 로깅 서버로 보내는 데 사용할 수 있습니다. 이를 통해 여러 애플리케이션에서 모두 함께 구문 분석할 수 있는 동일한 서버에 로그 메시지를 보낼 수 있습니다.
소켓
소켓 로그 핸들러는 소켓을 통해 로그 메시지를 원격 로깅 서버로 보내는 데 사용할 수 있습니다. TCP 또는 UDP 소켓일 수 있습니다.
사용자 지정
사용자 지정 로그 핸들러를 사용하면 구현된 새로운 로그 핸들러 유형을 구성할 수 있습니다. 사용자 지정 핸들러는 java.util.logging.Handler 를 확장하고 모듈에 포함된 Java 클래스로 구현해야 합니다. Log4J appender를 사용자 지정 로그 핸들러로 사용할 수도 있습니다.
async
비동기 로그 핸들러는 하나 이상의 다른 로그 핸들러에 대해 비동기 동작을 제공하는 래퍼 로그 핸들러입니다. 이 기능은 네트워크 파일 시스템에 로그 파일을 작성하는 등의 대기 시간이 길거나 기타 성능 문제가 있는 로그 핸들러에 유용합니다.

이러한 각 로그 핸들러 구성에 대한 자세한 내용은 로그 핸들러 구성 섹션을 참조하십시오.

11.3.4. 로그 수준

로그 수준은 로그 메시지의 특성 및 심각도를 나타내는 열거된 값입니다. 개발자는 선택한 로깅 프레임워크의 적절한 방법을 사용하여 지정된 로그 메시지 수준을 지정하여 메시지를 보낼 수 있습니다.

JBoss EAP는 지원되는 애플리케이션 로깅 프레임워크에서 사용하는 모든 로그 수준을 지원합니다. 가장 일반적으로 사용되는 로그 수준은 TRACE,DEBUG,INFO,WARN,ERROR, FATAL 입니다.

로그 수준은 로그 범주와 핸들러가 책임지는 메시지를 제한하도록 사용합니다. 각 로그 수준에는 다른 로그 수준에 상대적인 순서를 나타내는 숫자 값이 할당됩니다. 로그 카테고리 및 핸들러에는 로그 수준이 할당되며 해당 수준 이상의 로그 메시지만 처리합니다. 예를 들어 WARN 수준이 있는 로그 핸들러는 수준 WARN ,ERROR, FATAL 의 메시지만 기록합니다.

지원되는 로그 수준
로그 수준현재의설명

모두

Integer.MIN_VALUE

모든 로그 메시지를 제공합니다.

마케도니아

300

-

더 세분화

400

-

TRACE

400

TRACE 수준 로그 메시지는 애플리케이션의 실행 상태에 대한 자세한 정보를 제공하며 일반적으로 디버깅 중에만 캡처됩니다.

디버그

500

DEBUG 수준 로그 메시지는 개별 요청 또는 애플리케이션 활동의 진행 상황을 나타내며 일반적으로 디버깅 중에만 캡처됩니다.

NICE

500

-

CONFIG

700

-

정보

800

INFO(정보) 수준 로그 메시지는 애플리케이션의 전체 진행 상황을 나타냅니다. 종종 애플리케이션 시작, 종료 및 기타 주요 라이프사이클 이벤트에 사용됩니다.

경고

900

WARN 수준 로그 메시지는 오류가 발생하지 않지만 이상적이지 않은 상황을 나타냅니다. WARN 로그 메시지는 향후 오류가 발생할 수 있는 상황을 나타낼 수 있습니다.

경고

900

-

ERROR

1000

오류 수준 로그 메시지는 현재 활동 또는 요청이 완료되지 못하도록 할 수 있지만 애플리케이션이 실행되지 못하게 하는 오류가 있음을 나타냅니다.

심각

1000

-

치명적

1100

FATAL 수준 로그 메시지는 중요한 서비스 실패 및 애플리케이션 종료를 일으킬 수 있는 이벤트를 나타내며 JBoss EAP가 종료될 수 있음을 나타냅니다.

꺼짐

Integer.MAX_VALUE

는 로그 메시지를 표시하지 않습니다.

참고

ALL 은 가장 낮은 로그 수준이며 모든 로그 수준의 메시지를 포함합니다. 이는 가장 많은 로깅을 제공합니다.

FATAL 은 가장 높은 로그 수준이며 해당 수준의 메시지만 포함합니다. 이는 최소 로깅 양을 제공합니다.

11.3.5. 로그 포맷터

포맷터는 로그 메시지를 포맷하는 데 사용됩니다. named-formatter 특성을 사용하여 로깅 핸들러에 포맷터를 할당할 수 있습니다. 로깅 핸들러 구성에 대한 자세한 내용은 로그 핸들러 구성을 참조하십시오.

로깅 하위 시스템에는 네 가지 유형의 포맷터가 포함됩니다.

Pattern Formatter

패턴 포맷터는 로그 메시지를 일반 텍스트로 포맷하는 데 사용됩니다. formatter를 로그 핸들러의 named-formatter 특성으로 사용하는 것 외에도 formatter 리소스를 먼저 생성할 필요 없이 formatter 속성으로 사용할 수도 있습니다. 패턴 구문에 대한 자세한 내용은 패턴 형식 형식 문자를 참조하십시오.

패턴 포맷터를 구성하는 방법에 대한 자세한 내용은 Configure a Pattern Formatter 를 참조하십시오.

JSON Formatter

JSON 포맷터는 JSON으로 로그 메시지를 포맷하는 데 사용됩니다.

JSON 포맷터를 구성하는 방법에 대한 자세한 내용은 JSON 로그 포맷터 구성을 참조하십시오.

XML Formatter

XML 로그 포맷터는 XML로 로그 메시지를 포맷하는 데 사용됩니다.

XML 로그 포맷터 구성 방법에 대한 자세한 내용은 XML 로그 포맷터 구성을 참조하십시오.

사용자 정의 Formatter

핸들러와 함께 사용할 사용자 지정 포맷터입니다. 대부분의 로그 레코드는 printf 형식으로 포맷됩니다. 포맷터는 메시지를 올바르게 포맷하기 위해 org.jboss.logmanager.ExtLogRecord#getFormattedMessage() 를 호출해야 할 수 있습니다.

사용자 지정 로그 포맷 터를 구성하는 방법에 대한 자세한 내용은 사용자 지정 로그 포맷터 구성을 참조하십시오.

11.3.6. 필터 표현식

filter-spec 특성을 사용하여 구성된 필터 표현식은 다양한 기준에 따라 로그 메시지를 기록하는 데 사용됩니다. 필터 검사는 항상 포맷되지 않은 원시 메시지에서 수행됩니다. 로거 또는 핸들러에 대한 필터를 포함할 수 있지만 logger 필터는 핸들러에 배치된 필터보다 우선합니다.

참고

루트 로거에 지정된 filter-spec 은 다른 로거에서 상속되지 않습니다. 대신 핸들러별로 filter-spec 을 지정해야 합니다.

표 11.3. 로깅을 위한 필터 표현식

필터 표현식설명

수락

모든 로그 메시지를 수락합니다.

deny

모든 로그 메시지를 거부합니다.

not[filter expression]

단일 필터 표현식의 반전된 값을 반환합니다. 예를 들면 다음과 같습니다.

not(match("WFLY"))

모두[filter 표현식]

쉼표로 구분된 필터 표현식 목록에서 연결된 값을 반환합니다. 예를 들면 다음과 같습니다.

all(match("WFLY"),match("WELD"))

any[filter 표현식]

쉼표로 구분된 필터 표현식 목록에서 하나의 값을 반환합니다. 예를 들면 다음과 같습니다.

any(match("WFLY"),match("WELD"))

levelChange[level]

지정된 수준으로 로그 레코드를 업데이트합니다. 예를 들면 다음과 같습니다.

levelChange(WARN)

수준[수준]

쉼표로 구분된 수준 목록에 나열된 수준으로 로그 메시지를 필터링합니다. 예를 들면 다음과 같습니다.

수준(DEBUG,INFO,WARN,ERROR)

levelRange[minLevel,maxLevel]

지정된 수준 범위 내에서 로그 메시지를 필터링합니다. [] 문자는 포함 수준을 나타내는 데 사용됩니다. () 문자는 배타적 수준을 나타내는 데 사용됩니다. 예를 들면 다음과 같습니다.

  • levelRange[INFO,ERROR]

    • 최소 수준은 INFO 보다 크거나 같아야합니다. 최대 수준은 ERROR 보다 작거나 같아야합니다.
  • levelRange[DEBUG,ERROR)

    • 최소 수준은 DEBUG 보다 크거나 같아야 하며 최대 수준은 ERROR 보다 작아야 합니다.

match["pattern"]

제공된 정규 표현식을 사용하여 로그 메시지를 필터링합니다. 예를 들면 다음과 같습니다.

match("WFLY\d+")

substitute["pattern","replacement value"]

첫 번째 일치 패턴(첫 번째 인수)을 대체 텍스트(두 번째 인수)로 대체하는 필터입니다. 예를 들면 다음과 같습니다.

substitute("WFLY","EAP")

substituteAll["pattern","replacement value"]

패턴의 모든 일치 항목(첫 번째 인수)을 대체 텍스트(두 번째 인수)로 바꾸는 필터입니다. 예를 들면 다음과 같습니다.

substituteAll("WFLY","EAP")

참고

관리 CLI를 사용하여 필터 표현식을 구성할 때 값이 문자열로 올바르게 처리되도록 필터 텍스트에서 쉼표 및 따옴표 표시를 이스케이프해야 합니다. 쉼표와 따옴표 앞에 백슬래시(\) 앞에 표시하고 전체 표현식따옴표로 묶어야 합니다. 다음은 alternative All("WFLY","YLFW") 을 올바르게 이스케이프하는 예입니다.

/subsystem=logging/console-handler=CONSOLE:write-attribute(name=filter-spec, value="substituteAll(\"WFLY\"\,\"YLFW\")")

11.3.7. 암시적 로깅 종속성

기본적으로 JBoss EAP 로깅 하위 시스템은 암시적 로깅 API 종속성을 배포에 추가합니다. 기본적으로 trueadd-logging-api-dependencies 특성을 사용하여 이러한 암시적 종속성이 배포에 추가되는지 여부를 제어할 수 있습니다.

관리 CLI를 사용하면 암시적 로깅 API 종속성이 배포에 추가되지 않도록 add-logging-api-dependencies 속성을 false 로 설정할 수 있습니다.

/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false)

로깅 하위 시스템의 암시적 종속성에 대한 자세한 내용은 JBoss EAP 개발 가이드의 Implicit 모듈 종속성 섹션을 참조하십시오.