컨텍스트의 APM 로그는 앱, 호스트 및 기타 엔터티에 대한 모든 원격 측정 데이터와 로그를 연결합니다. 이 모든 데이터를 단일 도구로 통합하면 다음 작업을 빠르게 수행할 수 있습니다.
- 시간이 중요한 문제를 해결할 때 수천 개의 로그 노이즈를 제거하여 가장 관련성이 높은 로그만 자동으로 볼 수 있습니다.
- 여러 유형의 원격 분석 데이터 내에서 탐색하고 데이터를 원래 문제와 다시 연관시키십시오.
- UI의 동일한 위치에서 더 자세한 정보로 쉽게 드릴다운합니다.
- 문제를 식별하고 해결하는 데 필요한 로그 행을 찾으십시오.
예제를 포함한 자세한 내용 은 컨텍스트에서 APM 로그를 시작하는 방법을 알아보세요.
컨텍스트 옵션의 자동 로그
지원되는 프레임워크를 사용하는 경우 컨텍스트에서 APM 로그를 구성하여 앱의 로그를 보내고 메타데이터를 자동으로 New Relic에 연결하도록 구성하는 두 가지 옵션이 있습니다. 컨텍스트에서 자동 로그에 대해 지원되는 프레임워크는 다음과 같습니다.
- Log4j 2 2.6 이상
- 로그백 1.1 이상
중요
에이전트 릴리스 7.7.0 이상에는 기본적으로 에이전트 구성 파일에서 이 기능이 활성화되어 있습니다.
에이전트 로그 전달은 지원되는 프레임워크 가 감지될 때 데이터 소비를 증가시킵니다. 양은 애플리케이션 및 생성하는 로그의 양에 따라 다릅니다. 이 기능은 비활성화할 수 있습니다. 옵션에 대한 자세한 내용은 자동 로깅 비활성화 를 참조하십시오.
이미 로그 전달 솔루션이 있는 경우 이 기능을 비활성화해야 합니다.
다른 로깅 프레임워크를 사용하는 경우 컨텍스트 솔루션의 수동 로그인이 적합할 수 있습니다.
이것은 가장 간단한 접근 방식이며, 로그 전달자 설정에 대한 액세스 권한이나 관심이 없는 개발자 또는 앱 컨텍스트에서 로그 및 기타 연결 메타데이터의 힘을 확인하려는 계정에 탁월한 선택입니다. 많은 오버 헤드.
이 옵션을 사용하면 로그에 span.id
, trace.id
, hostname
, entity.guid
및 entity.name
가 포함됩니다. 이러한 속성은 로그를 스팬, 추적 및 기타 원격 분석에 자동으로 연결하므로 문제를 더 쉽게 해결할 수 있습니다.
이 기능은 기본적으로 활성화되어 있습니다.
로그 전달 기능이 있는 에이전트 버전( Java 에이전트 7.6.0 이상 )을 설치하고 전달을 활성화하도록 구성을 업데이트하기만 하면 됩니다.
구성 파일( newrelic.yml
), 공통 스탠자 아래에 공백 2개 들여쓰기:
application_logging: enabled: true forwarding: enabled: true max_samples_stored: 10000 local_decorating: enabled: false
환경 변수:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=false
시스템 속성:
-Dnewrelic.config.application_logging.enabled=true-Dnewrelic.config.application_logging.forwarding.enabled=true-Dnewrelic.config.application_logging.forwarding.max_samples_stored=10000-Dnewrelic.config.application_logging.local_decorating.enabled=false
선택적 조정(max_samples_stored):
이 기능이 활성화되면 매분 New Relic에 전송되는 최대 로그 줄 수를 제어할 수 있습니다. 기본값은 10,000입니다. 에이전트가 60초 동안 10,000개 이상의 로그 라인을 본 경우 로그 샘플링이 시작됩니다.
더 많은 로그를 수신하려면 더 높은 숫자로 설정하십시오. 더 적은 수의 로그를 수신하려면 더 낮은 숫자로 설정하십시오. 음이 아닌 모든 정수가 유효합니다.
팁
이것은 분당 전송된 로그 수를 나타냅니다. max_samples_stored
을 12보다 작은 값으로 설정하면 로그가 전송되지 않는 효과가 있습니다.
구성 파일( newrelic.yml
):
application_logging:
enabled: true
forwarding:
enabled: true
max_samples_stored: 10000
local_decorating:
enabled: false
환경 변수:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000
NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=false
시스템 속성:
-Dnewrelic.config.application_logging.enabled=true
-Dnewrelic.config.application_logging.forwarding.enabled=true
-Dnewrelic.config.application_logging.forwarding.max_samples_stored=10000
-Dnewrelic.config.application_logging.local_decorating.enabled=false
중요
기존 로그 전달 솔루션이 있고 컨텍스트에서 자동 로그를 사용하도록 에이전트를 업데이트하는 경우 수동 로그 전달기를 비활성화해야 합니다 . 그렇지 않으면 앱에서 이중 로그 라인을 전송합니다. 계정에 따라 이중 청구가 발생할 수 있습니다. 자세한 내용은 절차에 따라 특정 로그 전달자 를 비활성화하십시오.
이미 마음에 드는 로그 포워더가 있습니까? 우리는 당신을 덮었습니다! Java 에이전트는 자동 로그인 컨텍스트 기능에 대한 액세스를 제공하는 데 필요한 연결 메타데이터로 로그를 장식할 수 있으며 수동 로그 전달기를 사용하여 이를 New Relic으로 보낼 수 있습니다.
팁
이 옵션은 컨텍스트 데코레이터의 수동 로그를 대체합니다.
중요
이 옵션은 에이전트 내 전달과 함께 사용하면 안 됩니다. 에이전트 내 전달이 활성화된 상태에서 외부 로그 전달자 를 사용하여 New Relic에 로그를 전송하면 로그가 New Relic에 최대 두 번 전송됩니다. 계정에 따라 이중 청구가 발생할 수 있습니다.
에이전트 구성을 업데이트하여 로그 전달을 비활성화하고 로컬 장식을 활성화한 다음 에이전트를 다시 시작하여 로그 장식을 시작하세요.
구성 파일( newrelic.yml
), 공통 스탠자 아래에 공백 2개 들여쓰기:
application_logging: enabled: true local_decorating: enabled: true forwarding: enabled: false
환경 변수:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=false
시스템 속성:
-Dnewrelic.config.application_logging.enabled=true-Dnewrelic.config.application_logging.local_decorating.enabled=true-Dnewrelic.config.application_logging.forwarding.enabled=false
우리의 데코레이터는 애플리케이션 로그 파일의 모든 로그 메시지에 entity.guid
, hostname
, trace.id
, span.id
및 entity.name
5가지 속성을 추가합니다. 예시:
This is my log message. NR-LINKING|{entity.guid}|{hostname}|{trace.id}|{span.id}|{entity.name}|
로그가 트랜잭션 외부에서 발생했거나 애플리케이션 컨텍스트에 적용할 수 없는 경우 일부 속성은 비어 있을 수 있습니다.
데이터 보호
로그에는 HIPAA 또는 기타 규정 준수 프로토콜로 보호되는 민감한 정보가 포함될 수 있습니다. 기본적으로 신용 카드 또는 사회 보장 번호와 같은 항목에 대해 표시되는 번호 패턴을 난독화하지만 추가 정보를 해시하거나 마스킹해야 할 수도 있습니다.
자세한 내용은 난독화 표현식 및 규칙 에 대한 설명서를 참조하세요. New Relic UI를 사용하거나 GraphQL API인 NerdGraph를 사용하여 로그 데이터를 해시하거나 마스킹할 수 있습니다.
데이터 탐색
로깅 데이터를 최대한 활용하려면:
- APM 요약 페이지 에서 웹 트랜잭션 시간 차트를 클릭하여 특정 시점과 관련된 로그를 봅니다.
- 앱의 오류 받은 편지함 을 확인하여 오류와 관련된 로그를 확인하세요.
- 분산 추적 을 사용하여 개별 추적과 연결된 로그를 확인합니다.
- 로그 UI 를 사용하여 플랫폼 전체에서 더 많은 로깅 데이터를 탐색하십시오.
- 로그 출력 및 심각도에 따라 경고 를 설정합니다.
- 로그 데이터용 특수 UI를 사용 하여 데이터를 쿼리 하고 결과가 포함된 대시보드를 만드 십시오.
문제 해결 팁
일반적으로 컨텍스트에서 APM 로그를 활성화한 후 1분 이내에 로그가 나타나기 시작합니다. 앱의 분류 > 로그 섹션을 확인하십시오. 또한 오류와 관련된 로그 패턴 이 표시되기 시작합니다.
오류 또는 추적에 대한 로그가 표시되지 않으면 앱에 대한 로그가 없을 수 있습니다. UI 페이지를 새로고침하거나 선택한 기간 을 변경하세요.
자동 로깅 비활성화
컨텍스트의 APM 로그인은 APM 에이전트 로그 데이터를 자동으로 전달하며 기본적으로 활성화되어 있습니다. 이는 보안, 규정 준수, 청구 또는 시스템 성능에 부정적인 영향을 미칠 수 있습니다. 자세한 내용을 확인하거나 기본 설정을 조정해야 하는 경우 절차에 따라 자동 로깅을 비활성화 합니다.
컨텍스트 옵션의 수동 로그인
언어 에이전트가 로그를 전달하고 장식할 수 있기 전에는 수동 솔루션을 사용하여 연결 메타데이터를 보낼 수 있었습니다.
이 옵션은 계속 지원되지만 더 이상 권장되지 않습니다. 또한 이 방법을 사용하려면 컨텍스트에서 로그를 활성화하기 전에 로그 전달자를 설치해야 합니다. 로그 전달자가 없는 경우 New Relic UI는 인프라 에이전트 를 사용하라는 메시지를 표시합니다.
기존 로그 전달 솔루션을 사용하기로 결정하고 나중에 컨텍스트에서 자동 로그를 사용하도록 에이전트를 업데이트하기로 결정한 경우 수동 로그 전달기를 비활성화해야 합니다 . 그렇지 않으면 앱에서 이중 로그 라인을 전송합니다. 계정에 따라 이중 청구가 발생할 수 있습니다. 자세한 내용은 절차에 따라 특정 로그 전달자 를 비활성화하십시오.
Java 컨텍스트에서 수동 프로세스를 사용하여 로그를 설정해야 하는 경우 다음 단계를 따르세요.
- New Relic 에서 이미 로그인을 설정 했는지 확인하십시오. 여기에는 애플리케이션 로그를 수집하고 New Relic으로 전달되는 메타데이터를 확장하는 지원되는 로그 전달자 구성이 포함됩니다.
- 최신 Java 에이전트 버전을 설치 하거나 업데이트 하십시오. 컨텍스트의 로그에 Java 에이전트 버전 5.6.0 이상 을 사용하십시오.
- JVM 인수
-javaagent
를 활성화하고 분산 추적 을 활성화합니다. - 해당하는 경우 다음 확장 중 하나를 사용하여 로그 데이터를 보강하도록 Java 컨텍스트에서 로그를 구성합니다. Spring 또는 Spring Boot를 사용하고 어떤 확장이 필요한지 확실하지 않은 경우 Spring 문서를 참조하십시오.
Java 에이전트와 관련된 로그용 Dropwizard 확장을 제공합니다. 시작하려면 GitHub에서 코드 와 예제 애플리케이션 을 검토하세요.
DropWizard 확장을 사용하여 Java 앱에 대한 컨텍스트에서 로그를 구성하려면:
Dropwizard 1.3 이상 패키지가 설치되어 있고 응용 프로그램에서 작동하는지 확인하십시오. 원래 Dropwizard 어펜더와 로깅 팩토리가 설치되어 애플리케이션에서 작동하는 것을 사용하십시오.
애플리케이션에 New Relic Java 에이전트 버전 5.6.0 이상이 설치되어 있고 JVM 인수
-javaagent
가 활성화되어 있는지 확인하십시오.해당하는 경우 Dropwizard 1.3 확장을 포함하도록 프로젝트의 종속성을 업데이트합니다.
Gradle:
build.gradle
파일에 다음을 추가합니다.dependencies {implementation("com.newrelic.logging:dropwizard:2.0")}Maven:
pom.xml
파일에 다음을 추가합니다.<dependencies><dependency><groupId>com.newrelic.logging</groupId><artifactId>dropwizard</artifactId><version>2.0</version></dependency></dependencies>Dropwizard
.yaml
구성 파일을newrelic-json
레이아웃으로 업데이트하여 현재 사용 중인type: console
또는type: file
를type: newrelic-console
또는type: newrelic-file
로 적절하게 바꾸십시오. 예를 들어:logging: appenders: - type: newrelic-console # Add the two lines below if you don't have a layout specified on the appender. # If you have a layout, remove all parameters to the layout and set the type. layout: type: newrelic-json
New Relic Dropwizard 확장은 표준 Dropwizard 로깅을 사용하는
log-format
레이아웃 유형도 지원합니다. 테스트 목적으로 한 줄 변경으로 레이아웃 유형을 변경할 수 있습니다.logging:appenders:- type: newrelic-file# This format will be ignored by the newrelic-json layout, but used by the log-format layout.logFormat: "%date{ISO8601} %c %-5p: %m trace.id=%mdc{trace.id} span.id=%mdc{span.id}%n"layout:# type: newrelic-jsontype: log-format
Java 에이전트 컨텍스트에서 로그에 대한 java.util.logging 확장을 제공합니다. 시작하려면 GitHub에서 코드 와 예제 애플리케이션 을 검토하세요.
java.util.logging
확장자를 사용하여 자바 앱의 컨텍스트에서 로그를 구성하려면 다음을 수행합니다.
java.util.logging 패키지가 설치되어 있고 애플리케이션에서 작동하는지 확인하십시오.
애플리케이션에 New Relic Java 에이전트 버전 5.6.0 이상이 설치되어 있고 JVM 인수
-javaagent
가 활성화되어 있는지 확인하십시오.해당하는 경우
java.util.logging
확장을 포함하도록 프로젝트의 종속성을 업데이트합니다. 이러한 파일을 편집할 수 없는 경우 대신 jar를 애플리케이션classpath
에 직접 추가 할 수 있습니다.Gradle:
build.gradle
파일에 다음을 추가합니다.dependencies {implementation("com.newrelic.logging:jul:2.0")}Maven:
pom.xml
파일에 다음을 추가합니다.<dependencies><dependency><groupId>com.newrelic.logging</groupId><artifactId>jul</artifactId><version>2.0</version></dependency></dependencies>로깅 파일의
handlers
속성이NewRelicMemoryHandler
이외의 것으로 설정되어 있는지 확인하십시오. 다음과 같이 루트 로거의 핸들러를 나열하는 행을 찾으십시오.handlers = java.util.logging.FileHandler루트 로거의 핸들러를
NewRelicMemoryHandler
으로 설정하도록 로깅 속성 파일을 업데이트하여 다른 핸들러로 향하는 메시지를 가로챕니다.handlers = com.newrelic.logging.jul.NewRelicMemoryHandler대상을 이전에 루트 로거에 할당된 핸들러로 설정하여
NewRelicMemoryHandler
을 구성하여 로그 메시지가 나오는 스레드에서 New Relic이 필요로 하는 데이터를 캡처합니다.com.newrelic.logging.jul.NewRelicMemoryHandler.target = java.util.logging.FileHandler최종 핸들러에
NewRelicFormatter
을 사용합니다. 다음 예와 같이formatter
속성을 설정하도록 로깅 속성 파일을 업데이트합니다. 포맷터를 설정한 핸들러가 이전 단계의target
핸들러인지 확인하십시오(이 예에서는java.util.logging.FileHandler
).java.util.logging.FileHandler.formatter = com.newrelic.logging.jul. NewRelicFormatterNew Relic 로그 형식은 트랜잭션과 로그를 함께 연관시키는 데 사용하는 원격 측정 메타데이터가 포함된 JSON입니다. 현재 우리는 해당 형식의 사용자 정의를 지원하지 않습니다.
완료되면 텍스트 대신 JSON이 기록됩니다. JSON은 한 줄에 하나씩 단일 개체로 형식이 지정되어야 하며
log.level
및thread.name
같은 필드를 포함해야 합니다. 컨텍스트의 로그에 필요한trace.id
에는 트랜잭션 내에서 발생하는 로그 메시지에 대한 값만 있어야 합니다.
Logs-in-context 확장을 가져오는 가장 직접적인 방법은 이러한 종속성을 Maven의 pom.xml
또는 Gradle의 build.gradle
에 추가하는 것입니다. 이를 통해 패키징 도구가 올바른 종속성을 선택할 수 있습니다.
이러한 파일을 편집할 수 없는 경우 대신 로깅 프레임워크의 구성을 위해 애플리케이션 classpath
에 jar를 직접 추가할 수 있습니다.
클래스 경로를 수정하기 전에:
- 앱의 Java 에이전트에서 JVM 인수
-javaagent
를 활성화합니다. - 애플리케이션이 사용 중인 로깅 프레임워크를 확인하십시오.
- 로깅 프레임워크의 구성을 변경할 수 있는지 확인하십시오.
- 다음 세 개의 jar가 아직 없는 경우 클래스 경로에 추가하십시오. 일반적으로 Maven Central에 게시된 최신 버전을 사용하는 것이 좋습니다.
- 그룹 ID
com.newrelic.logging
및 아티팩트 ID: Maven에서 애플리케이션의 로깅 프레임워크 이름을 따서 명명된 아티팩트를 선택합니다. - 그룹 ID
com.fasterxml.jackson.core
및 아티팩트 ID:jackson-core
사용 - 그룹 ID
com.newrelic.agent.java
및 아티팩트 ID:newrelic-api
사용
팁
Java용 컨텍스트 솔루션의 자동 로그를 활용하십시오. 이 수동 프로세스를 사용할 필요가 없습니다!
Java 에이전트와 관련된 수동 로그용 Log4j 1.x 확장을 제공합니다. 시작하려면 GitHub에서 코드 와 예제 애플리케이션 을 검토하세요.
Log4j 1.x 확장을 사용하여 Java 앱의 컨텍스트에서 수동 로그를 구성하려면 코드에서 또는 XML을 통해 Log4j 확장을 구성해야 합니다. AsyncAppender
인스턴스는 XML을 통해서만 자동으로 구성할 수 있으므로 속성 파일은 지원되지 않습니다.
Log4j 1.x 패키지가 설치되어 있고 애플리케이션에서 작동하는지 확인하십시오.
애플리케이션에 New Relic Java 에이전트 버전 5.6.0 이상이 설치되어 있고 JVM 인수
-javaagent
가 활성화되어 있는지 확인하십시오.해당하는 경우 Log4j 1.x 확장을 포함하도록 프로젝트의 종속성을 업데이트합니다.
Gradle:
build.gradle
파일에 다음을 추가합니다.dependencies {implementation("com.newrelic.logging:log4j1:2.0")}Maven:
pom.xml
파일에 다음을 추가합니다.<dependencies><dependency><groupId>com.newrelic.logging</groupId><artifactId>log4j1</artifactId><version>2.0</version></dependency></dependencies>로깅 구성 XML 파일에서
<appender>
요소를NewRelicLayout
로 업데이트하고<layout class="com.newrelic.logging.log4j1.NewRelicLayout"/>
를 추가합니다.<appender name="TypicalFile" class="org.apache.log4j.FileAppender"> <param name="file" value="logs/log4j1-app.log"/> <param name="append" value="false"/> <layout class="com.newrelic.logging.log4j1.NewRelicLayout"/> <!-- only this line needs to be added --> </appender>
NewRelicAsyncAppender
을 사용하여 New Relic의 로그 전달자를 대상으로 하는 모든 어펜더를 래핑합니다. 예를 들어:<appender name="NewRelicFile" class="com.newrelic.logging.log4j1.NewRelicAsyncAppender"> <appender-ref ref="TypicalFile" /> </appender>
루트 로거에서 async appender를 사용하십시오. 예를 들어:
<root> <appender-ref ref="NewRelicFile" /> </root>
Log4j 1.x 확장에 대한 예제 구성 파일:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="false"> <appender name="TypicalFile" class="org.apache.log4j.FileAppender"> <param name="file" value="logs/log4j1-app.log"/> <param name="append" value="false"/> <!-- layout has been replaced --> <layout class="com.newrelic.logging.log4j1.NewRelicLayout"/> </appender> <!-- this appender was added --> <appender name="NewRelicFile" class="com.newrelic.logging.log4j1.NewRelicAsyncAppender"> <appender-ref ref="TypicalFile" /> </appender> <appender name="TypicalConsole" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> </layout> </appender> <root> <!-- the new appender was used here --> <appender-ref ref="NewRelicFile" /> <appender-ref ref="TypicalConsole" /> </root> </log4j:configuration>
팁
Java용 컨텍스트 솔루션의 자동 로그를 활용하십시오. 이 수동 프로세스를 사용할 필요가 없습니다!
Java 에이전트 컨텍스트에서 로그용 Log4j 2.x 확장을 제공합니다. 시작하려면 GitHub에서 코드 와 예제 애플리케이션 을 검토하세요.
Log4j 2.x 확장을 사용하여 Java 앱의 컨텍스트에서 로그를 구성하려면:
Log4j 2.13.2 이상 또는 Logs4j 2 바인딩 패키지가 설치되어 있고 애플리케이션에서 작동하는지 확인하십시오.
애플리케이션에 New Relic Java 에이전트 버전 5.6.0 이상이 설치되어 있고 JVM 인수
-javaagent
가 활성화되어 있는지 확인하십시오.해당하는 경우 Log4j 2.x 확장을 포함하도록 프로젝트의 종속성을 업데이트합니다.
Gradle: 강조 표시된 섹션을
build.gradle
파일에 추가합니다.dependencies { implementation("com.newrelic.logging:log4j2:2.0") }
Maven: 강조 표시된 섹션을
pom.xml
파일에 추가합니다.<dependencies> <dependency> <groupId>com.newrelic.logging</groupId> <artifactId>log4j2</artifactId> <version>2.0</version> </dependency> </dependencies>
로깅 구성 XML 파일에서 강조 표시된 섹션을 추가하여
<configuration>
요소를 업데이트합니다.<Configuration xmlns="http://logging.apache.org/log4j/2.0/config" packages="com.newrelic.logging.log4j2" >
속성 파일을 사용하는 경우
packages=com.newrelic.logging.log4j2
을 추가합니다.어펜더 중 하나 내에서
NewRelicLayout
요소를 사용하려면<NewRelicLayout/>
을 추가합니다. 예를 들어:<File name="MyFile" fileName="logs/app-log-file.log"> <NewRelicLayout/> </File>
속성 파일을 사용하는 경우
layout.type
만 변경합니다.appender.console.type = Console appender.console.name = STDOUT appender.console.layout.type = NewRelicLayout
기존 어펜더만 수정한 경우 이 단계를 건너뜁니다. 새 appender를 추가한 경우 이 appender를 사용하려면
<Root>
<AppenderRef/>
를 추가하세요.ref
속성을 사용하여 이전 단계에서 생성한 appendername
를 참조하십시오. 예를 들어:<Root level="info"> <AppenderRef ref="MyFile"/> </Root>
속성 파일을 사용 중이고 새 appender를 추가한 경우 다음을 추가하세요.
rootLogger.level = info rootLogger.appenderRef.stdout.ref = STDOUT
팁
Java용 컨텍스트 솔루션의 자동 로그를 활용하십시오. 이 수동 프로세스를 사용할 필요가 없습니다!
Java 에이전트와 관련된 로그에 대한 Logback 확장을 제공합니다. 시작하려면 GitHub에서 코드 와 예제 애플리케이션 을 검토하세요.
Logback을 사용하여 Java 앱의 컨텍스트에서 로그를 구성하려면:
Logback 버전 1.2.0 이상 과 New Relic Java 에이전트 버전 5.6.0 이상이 설치되어 있고 애플리케이션에서 작동하는지 확인하십시오.
애플리케이션에 New Relic Java 에이전트 버전 5.6.0 이상이 설치되어 있고 JVM 인수
-javaagent
가 활성화되어 있는지 확인하십시오.해당하는 경우 Logback 확장을 포함하도록 프로젝트의 종속성을 업데이트합니다.
Gradle: 강조 표시된 섹션을
build.gradle
파일에 추가합니다.dependencies { implementation("com.newrelic.logging:logback:2.0") }
Maven: 강조 표시된 섹션을
pom.xml
파일에 추가합니다.<dependencies> <dependency> <groupId>com.newrelic.logging</groupId> <artifactId>logback</artifactId> <version>2.0</version> </dependency> </dependencies>
기존
<encoder>
요소를 교체하려면 로깅 구성xml
을 업데이트하십시오.콘솔(
stdout/stderr
)에 로그인하는 경우ConsoleAppender
을 찾아 다음으로 바꿉니다.<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="com.newrelic.logging.logback.NewRelicEncoder"/></appender>파일에 로깅하는 경우
FileAppender
을 찾아<encoder>
로 바꿉니다.<appender name="LOG_FILE" class="ch.qos.logback.core.FileAppender"><file>logs/app-log-file.log</file><encoder class="com.newrelic.logging.logback.NewRelicEncoder"/></appender>NewRelicAsyncAppender
로 로깅 구성xml
을 업데이트합니다.NewRelicAsyncAppender
가 New Relic의 로그 전달자를 대상으로 하는 모든 어펜더를 래핑하도록 하려면 다음 섹션을 추가하세요."LOG_FILE"
을 이전 단계에서 업데이트한 어펜더의 이름으로 변경합니다.<appender name="ASYNC" class="com.newrelic.logging.logback.NewRelicAsyncAppender"><appender-ref ref="LOG_FILE" /></appender>NewRelicAsyncAppender
이 로거에서 사용되는 첫 번째 appender인지 확인하십시오. 루트 로거의 appender를 이전 단계에서 생성된ASYNC
appender로 교체합니다. 그런 다음<root>
목록에서NewRelicAsyncAppender
뒤에 다른 모든 어펜더를 나열합니다.<root><appender-ref ref="ASYNC" /></root>다음은 Logback 확장에 대한 업데이트된 로깅
.xml
파일의 예입니다. GitHub 에서 작업 예제를 볼 수도 있습니다.단일 콘솔 어펜더 예제
로깅 확장 정보를 추가한 후 구성 파일의 예:
<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!-- changed the encoder --><encoder class="com.newrelic.logging.logback.NewRelicEncoder"/></appender><!-- added the ASYNC appender --><appender name="ASYNC" class="com.newrelic.logging.logback.NewRelicAsyncAppender"><appender-ref ref="STDOUT" /></appender><root level="debug"><!-- changed the root logger --><appender-ref ref="ASYNC" /></root></configuration>두 개의 콘솔 어펜더 예
이 예는 New Relic 로깅을 파일로 보내지만 여전히 표준 로깅을 콘솔로 보냅니다.
<configuration><appender name="FILE" class="ch.qos.logback.core.FileAppender"><file>myApp.log</file><!-- encoder changed --><encoder class="com.newrelic.logging.logback.NewRelicEncoder"/></appender><!-- this appender does normal console logging --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%msg%n</pattern></encoder></appender><!-- The required New Relic ASYNC appender wraps the FILE appender --><appender name="ASYNC" class="com.newrelic.logging.logback.NewRelicAsyncAppender"><appender-ref ref="FILE" /></appender><root level="debug"><!-- ASYNC is one of the main appenders --><appender-ref ref="ASYNC" /><!-- Send every message to normal console logging, as well. --><appender-ref ref="STDOUT" /></root></configuration>
현재 버전의 Spring 및 Spring Boot 에 대한 확장을 제공합니다. 로깅 라이브러리를 이미 알고 있다면 해당 문서로 바로 건너뛸 수 있습니다.
확장은 Spring Boot 2.0 이상에서만 기본 구성을 지원합니다.
스프링 부트 사용 시:
다음은 보유하고 있는 로깅 라이브러리를 결정하는 팁입니다.
종속 항목에
spring-boot-starter-log4j2
이 있는 경우 log4j 2.x 를 사용하고 있는 것입니다. 기본 구성에 대해서는 Spring Boot log4j 2.x 문서 를 참조하고 구성 사용자 정의에 대해서는 New Relic log4j 2 확장 을 참조하십시오.Spring Boot를 사용하고 있지만
starter-log4j2
은 사용 하지 않는 경우 기본적으로 logback 을 사용하고 있습니다. 기본 구성에 대해서는 Spring Boot 로그백 문서 를 참조하고 구성을 사용자 정의하려면 New Relic 로그백 확장 을 참조하십시오.스프링 사용(스프링 부트 제외):
스프링 5 이상:
Spring은 자동으로 찾을 다른 로깅 라이브러리에 대한 브리지 를 구현합니다. 그러나 이러한 개별 라이브러리를 구성하고 프로젝트 종속성에 명시적으로 포함해야 합니다.
로깅 종속성을 식별하려면 Gradle , Maven 또는 기타 빌드 도구의 종속성 트리를 참조하세요. 그런 다음 절차에 따라 해당 확장을 사용하는 Java 앱의 컨텍스트에서 로그를 구성합니다.
스프링 4 이하:
Spring 버전 4 이하에서는 브리지에 Apache Commons Logging 을 사용합니다. 브리지 구성에 대한 정보는 Spring 문서 를 참조하십시오.