11.8. 애플리케이션 로깅 정보

애플리케이션의 로깅은 JBoss EAP 로깅 하위 시스템을 사용하거나 배포별로 구성할 수 있습니다.

로그 메시지 캡처를 위한 JBoss EAP 로그 카테고리 및 핸들러 사용을 위해 로깅 하위 시스템 정보를 참조하십시오.

지원되는 애플리케이션 로깅 프레임워크 및 배포별 로깅 구성과 같은 애플리케이션 로깅에 대한 자세한 내용은 JBoss EAP 개발 가이드의 로깅 장을 참조하십시오.

11.8.1. 배포별 로깅

배포별 로깅을 사용하면 개발자가 사전에 애플리케이션의 로깅 구성을 구성할 수 있습니다. 애플리케이션이 배포되면 정의된 구성에 따라 로깅이 시작됩니다. 이 구성을 통해 생성된 로그 파일에는 애플리케이션의 동작만 포함됩니다.

참고

배포별 로깅 구성이 수행되지 않으면 모든 애플리케이션과 서버에 로깅 하위 시스템의 구성이 사용됩니다.

이 방법에는 시스템 전체 로깅 사용에 대한 장단점이 있습니다. JBoss EAP 인스턴스의 관리자가 서버 로깅보다 다른 로깅을 구성할 필요가 없다는 장점이 있습니다. 단점은 배포별 로깅 구성은 서버 시작 시에만 읽기 때문에 런타임 시 변경할 수 없다는 점입니다.

애플리케이션에서 배포별 로깅을 사용하는 방법에 대한 지침은 JBoss EAP 개발 가이드 의 애플리케이션에 배포별 로깅 추가를 참조하십시오.

11.8.1.1. 배포별 로깅 비활성화

다음 방법 중 하나로 배포별 로깅을 비활성화할 수 있습니다.

  • use-deployment-logging-config 특성을 false로 설정합니다.

    use-deployment-logging-config 특성은 배포별 로깅을 위해 배포 스캔 여부를 제어합니다. 기본값은 true 입니다. 배포별 로깅을 비활성화하려면 이 속성을 false 로 설정할 수 있습니다.

    /subsystem=logging:write-attribute(name=use-deployment-logging-config,value=false)
  • jboss-deployment-structure.xml 파일을 사용하여 로깅 하위 시스템을 제외합니다.

    자세한 내용은 JBoss EAP 개발 가이드 의 배포에서 하위 시스템 제외 를 참조하십시오.

11.8.2. 로깅 프로필

로깅 프로필은 배포된 애플리케이션에 할당할 수 있는 별도의 로깅 구성 세트입니다. 일반 로깅 하위 시스템과 마찬가지로 로깅 프로필은 핸들러, 카테고리 및 루트 로거를 정의할 수 있지만 다른 프로필 또는 기본 로깅 하위 시스템에서 구성을 참조할 수는 없습니다. 로깅 프로필 설계는 구성이 용이하도록 로깅 하위 시스템을 모방합니다.

관리자는 로깅 프로필을 사용하여 다른 로깅 구성에 영향을 주지 않고 하나 이상의 애플리케이션에 해당하는 로깅 구성을 생성할 수 있습니다. 각 프로필은 서버 구성에 정의되므로 영향을 받는 애플리케이션을 재배포할 필요 없이 로깅 구성을 변경할 수 있습니다.

각 로깅 프로파일에는 다음이 포함될 수 있습니다.

  • 고유한 이름입니다. 이 값은 필수입니다.
  • 임의 개수의 로그 핸들러.
  • 원하는 수의 로그 카테고리.
  • 최대 1개의 루트 로거.

애플리케이션은 Logging-Profile 특성을 사용하여 MANIFEST.MF 파일에서 사용할 로깅 프로필을 지정할 수 있습니다.

11.8.2.1. 로깅 프로필 구성

로깅 프로필은 로그 핸들러, 카테고리 및 루트 로거를 사용하여 구성할 수 있습니다. 로깅 프로필 구성은 다음과 같은 차이점을 제외하고 로깅 하위 시스템을 구성하는 것과 동일한 구문을 사용합니다.

  • 루트 구성 경로는 /subsystem=logging/logging-profile=NAME 입니다.
  • 로깅 프로파일에는 다른 로깅 프로필이 포함될 수 없습니다.
  • 로깅 하위 시스템에는 로깅 프로필에 사용할 수 없는 다음 속성이 있습니다.

    • add-logging-api-dependencies
    • use-deployment-logging-config
로깅 프로필 생성 및 구성

다음 절차에서는 관리 CLI를 사용하여 로깅 프로필을 생성하고 파일 핸들러 및 로거 범주를 설정합니다. ConfigurationSubsystems → Logging → Logging Profiles 로 이동하여 관리 콘솔을 사용하여 로깅 프로필을 구성할 수도 있습니다.

  1. 로깅 프로필을 생성합니다.

    /subsystem=logging/logging-profile=PROFILE_NAME:add
  2. 파일 핸들러를 생성합니다.

    /subsystem=logging/logging-profile=PROFILE_NAME/file-handler=FILE_HANDLER_NAME:add(file={path=>"LOG_NAME.log", "relative-to"=>"jboss.server.log.dir"})
    /subsystem=logging/logging-profile=PROFILE_NAME/file-handler=FILE_HANDLER_NAME:write-attribute(name="level", value="DEBUG")

    파일 핸들러 속성 목록은 파일 로그 핸들러 속성 목록을 참조하십시오.

  3. 로거 범주를 만듭니다.

    /subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add(level=TRACE)

    로그 카테고리 속성 목록은 Log Category Attributes 를 참조하십시오.

  4. 파일 핸들러를 카테고리에 할당합니다.

    /subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add-handler(name="FILE_HANDLER_NAME")

그런 다음 MANIFEST.MF 파일의 애플리케이션에서 사용하도록 로깅 프로필을 설정할 수 있습니다. 자세한 내용은 JBoss EAP 개발 가이드 의 애플리케이션에서 로깅 프로필 지정 을 참조하십시오.

11.8.2.2. 로깅 프로파일 구성 예

이 예에서는 로깅 프로필 구성과 이를 사용하는 애플리케이션을 보여줍니다. 관리 CLI 명령, 결과 XML 및 애플리케이션의 MANIFEST.MF 파일을 표시합니다.

예제 로깅 프로필에는 다음과 같은 특징이 있습니다.

  • 이름은 accounts-app-profile 입니다.
  • 로그 카테고리는 com.company.accounts.ejbs입니다.
  • 로그 수준 TRACE 입니다.
  • 로그 핸들러는 ejb-trace.log 파일을 사용하는 파일 핸들러입니다.

관리 CLI 세션

/subsystem=logging/logging-profile=accounts-app-profile:add

/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:add(file={path=>"ejb-trace.log", "relative-to"=>"jboss.server.log.dir"})

/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:write-attribute(name="level", value="DEBUG")

/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add(level=TRACE)

/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add-handler(name="ejb-trace-file")

XML 설정

<logging-profiles>
   <logging-profile name="accounts-app-profile">
      <file-handler name="ejb-trace-file">
         <level name="DEBUG"/>
         <file relative-to="jboss.server.log.dir" path="ejb-trace.log"/>
      </file-handler>
      <logger category="com.company.accounts.ejbs">
         <level name="TRACE"/>
         <handlers>
            <handler name="ejb-trace-file"/>
         </handlers>
      </logger>
   </logging-profile>
</logging-profiles>

애플리케이션 관리자.MF 파일

Manifest-Version: 1.0
Logging-Profile: accounts-app-profile

11.8.3. 배포 로깅 구성 보기

다음 관리 CLI 명령을 사용하여 특정 배포의 로깅 구성에 대한 정보를 가져올 수 있습니다.

/deployment=DEPLOYMENT_NAME/subsystem=logging/configuration=CONFIG:read-resource

배포에 대한 로깅 구성 값인 CONFIG 는 다음 세 가지 값 중 하나일 수 있습니다.

  • 기본적으로 배포에서 로깅 하위 시스템을 사용하는 경우. 그러면 로깅 하위 시스템 구성이 출력됩니다.
  • profile-PROFILE_NAME: 배포에서 로깅 하위 시스템에 정의된 로깅 프로필을 사용하는 경우. 그러면 로깅 프로필 구성이 출력됩니다.
  • 사용 중인 구성 파일의 경로입니다(예: myear.ear/META-INF/logging.properties ).

예를 들어 아래 관리 CLI 명령은 지정된 배포에서 사용하는 MYPROFILE 로깅 프로필의 구성을 표시합니다.

/deployment=mydeployment.war/subsystem=logging/configuration=profile-MYPROFILE:read-resource(recursive=true,include-runtime=true)

이렇게 하면 다음 정보가 출력됩니다.

{
    "outcome" => "success",
    "result" => {
        "error-manager" => undefined,
        "filter" => undefined,
        "formatter" => {
            "MYFORMATTER" => {
                "class-name" => "org.jboss.logmanager.formatters.PatternFormatter",
                "module" => undefined,
                "properties" => {"pattern" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"}
            }
        },
        "handler" => {
            "MYPERIODIC" => {
                "class-name" => "org.jboss.logmanager.handlers.PeriodicRotatingFileHandler",
                "encoding" => undefined,
                "error-manager" => undefined,
                "filter" => undefined,
                "formatter" => "MYFORMATTER",
                "handlers" => [],
                "level" => "ALL",
                "module" => undefined,
                "properties" => {
                    "append" => "true",
                    "autoFlush" => "true",
                    "enabled" => "true",
                    "suffix" => ".yyyy-MM-dd",
                    "fileName" => "EAP_HOME/standalone/log/deployment.log"
                }
            }
        },
        "logger" => {"MYCATEGORY" => {
            "filter" => undefined,
            "handlers" => [],
            "level" => "DEBUG",
            "use-parent-handlers" => true
        }},
        "pojo" => undefined
    }
}

재귀적 읽기-리소스 작업을 사용하여 로깅 구성 및 배포에 대한 기타 정보를 읽을 수도 있습니다.

/deployment=DEPLOYMENT_NAME/subsystem=logging:read-resource(include-runtime=true, recursive=true)