지원되는 프레임워크를 사용하는 경우 APM 문맥적 로그를 구성하여 앱의 로그를 보내고 메타데이터를 자동으로 뉴렐릭에 연결하는 두 가지 옵션이 있습니다. 한 가지 옵션은 로그를 장식할 로그 확장을 수동으로 구성한 다음 스스로에게 전달하는 것입니다. 다른 옵션은 Java 에이전트가 자동으로 로그 장식과 전달을 처리하도록 하는 것입니다. 자동 문맥적 로그에 대해 지원되는 프레임워크는 다음과 같습니다.
Log4j1 1.2.17 이상
Log4j 2 2.6 이상
로그백 1.1 이상
JUL (java.util.logging) JDK 8+
JBoss 로깅 1.3.0.최종에서 2.x로
Dropwizard 로깅(Logback 계측을 통해 캡처됨, 아래 알려진 문제 참조)
중요
JBoss 로깅
JBoss Logging은 로컬 장식 기능을 JUL 계측에 위임하므로, 다음 두 계측 모듈에 의해 완전히 제어될 수 있습니다.
class_transformer:
com.newrelic.instrumentation.java.logging-jdk8:
enabled:true
com.newrelic.instrumentation.jboss.logging:
enabled:true
중요
Dropwizard 로깅의 알려진 문제
기본적으로 Dropwizard는 로깅 백엔드에 Logback을 사용합니다. 또한 Logback을 통해 모든 java.util.logging, Log4j 및 Apache Commons Logging을 라우팅합니다. Java 에이전트가 Logback 외에 다른 로깅 라이브러리를 계측하는 경우, 이 라우팅 동작으로 인해 중복 로그가 뉴렐릭에 보고될 수 있습니다.
Dropwizard 로깅을 사용할 때 중복 로그가 보고되지 않도록 하려면 Logback을 제외한 모든 로깅 프레임워크 계측을 비활성화하는 것이 좋습니다. 에이전트 구성 파일의 class_transformer 섹션에서 이 작업을 수행할 수 있습니다.
class_transformer:
com.newrelic.instrumentation.logback-classic-1.2:
enabled:true
com.newrelic.instrumentation.apache-log4j-1:
enabled:false
com.newrelic.instrumentation.apache-log4j-2:
enabled:false
com.newrelic.instrumentation.java.logging-jdk8:
enabled:false
com.newrelic.instrumentation.jboss.logging:
enabled:false
중요
에이전트 릴리스 7.7.0 이상에는 기본적으로 에이전트 구성 파일에서 이 기능이 활성화되어 있습니다.
에이전트 로그 전달은 지원되는 프레임워크가 감지되면 데이터 소비를 증가시킵니다. 그 양은 애플리케이션과 애플리케이션이 생성하는 로그의 양에 따라 다릅니다. 이 기능은 비활성화할 수 있습니다. 옵션에 대한 보다 자세한 내용은 자동 로깅 비활성화를 참조하십시오.
이미 로그 전달 솔루션이 있는 경우 이 기능을 비활성화해야 합니다.
Java 에이전트가 로그를 전달하도록 하지 않고 자체 로그 전달자를 사용하려는 경우, 수동 문맥적 로그 솔루션이 트레이스 컨텍스트 메타데이터로 로그를 장식하는 데 적합한 솔루션입니다.
이것은 가장 간단한 접근 방식이며, 로그 전달자 설정에 대한 액세스 권한이나 관심이 없는 개발자 또는 앱 컨텍스트에서 로그 및 기타 연결 메타데이터의 힘을 확인하려는 계정에 탁월한 선택입니다. 많은 오버 헤드.
이 옵션을 사용하여 에이전트는 span.id , trace.id , hostname , entity.guid 및 entity.name 를 추가합니다. 로그 전달 제한에 대해 알아보세요.
이 기능은 기본적으로 활성화되어 있습니다.
로그 전달 기능이 있는 에이전트 버전(Java 에이전트 7.6.0 이상)을 설치하기만 하면 됩니다. 전달 기능이 비활성화된 경우 다음 구성을 사용할 수 있습니다.
기존 로그 포워딩 솔루션이 있고 컨텍스트에서 자동 로그인을 사용하도록 에이전트를 업데이트하는 경우 disable your manual log forwarder 를 확인하세요. 그렇지 않으면 앱이 이중 로그 라인을 전송하게 됩니다. 귀하의 계정에 따라 이중 청구가 발생할 수 있습니다. 자세한 내용을 보려면 특정 로그 전달자를 비활성화하는 절차를 따르십시오.
이미 마음에 드는 로그 포워더가 있습니까? 우리는 당신을 덮었습니다! Java 에이전트는 자동 로그인 컨텍스트 기능에 대한 액세스를 제공하는 데 필요한 연결 메타데이터로 로그를 장식할 수 있으며 수동 로그 전달기를 사용하여 이를 New Relic으로 보낼 수 있습니다.
일반적으로 컨텍스트에서 로그를 활성화한 후 1분 이내에 로그가 표시되기 시작합니다. 앱의 Triage > Logs 섹션을 확인하세요. 또한 오류와 관련된 로그 패턴 도 표시되기 시작합니다.
오류 또는 추적에 대한 로그가 표시되지 않으면 앱에 대한 로그가 없을 수 있습니다. UI 페이지를 새로고침하거나 선택한 기간 을 변경하세요.
자동 로깅 비활성화
컨텍스트의 APM 로그는 에이전트 로그 데이터를 자동으로 전달하며 기본적으로 활성화됩니다. 이는 보안, 규정 준수, 청구 또는 시스템 성능에 부정적인 영향을 미칠 수 있습니다. 자동 로그를 비활성화하려면:
뉴렐릭 의 사용자 메뉴 에서 을 UI Manage your data > Log settings클릭하세요.
계정 행 오른쪽에 있는 줄임표 ... 메뉴를 클릭합니다.
확인 버튼을 클릭하여 자동 로깅을 활성화 또는 비활성화하고 잠그거나 잠금 해제하거나(상위 계정) 활성화 또는 비활성화(하위 계정)만 합니다.
보다 자세한 내용이나 기본 설정을 조정하길 원하는 경우 자동 로깅 비활성화 절차를 따르십시오.
컨텍스트 옵션의 수동 로그인
언어 에이전트가 로그를 전달하고 장식할 수 있기 전에는 수동 솔루션을 사용하여 연결 메타데이터를 보낼 수 있었습니다.
이 옵션은 계속 지원되지만 더 이상 권장되지 않습니다. 또한 이 방법을 사용하려면 컨텍스트에서 로그를 활성화하기 전에 로그 전달자를 설치해야 합니다. 로그 전달자가 없는 경우 New Relic UI는 인프라 에이전트 를 사용하라는 메시지를 표시합니다.
기존 로그 포워딩 솔루션을 사용하기로 결정하고 나중에 컨텍스트에서 자동 로그를 사용하도록 에이전트를 업데이트하기로 결정한 경우 disable your manual log forwarder 를 확인하세요. 그렇지 않으면 앱이 이중 로그 라인을 전송하게 됩니다. 귀하의 계정에 따라 이중 청구가 발생할 수 있습니다. 자세한 내용을 보려면 특정 로그 전달자를 비활성화하는 절차를 따르십시오.
Java 컨텍스트에서 수동 프로세스를 사용하여 로그를 설정해야 하는 경우 다음 단계를 따르세요.
New Relic 에서 이미 로그인을 설정 했는지 확인하십시오. 여기에는 애플리케이션 로그를 수집하고 New Relic으로 전달되는 메타데이터를 확장하는 지원되는 로그 전달자 구성이 포함됩니다.
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.
최종 핸들러에 NewRelicFormatter 을 사용합니다. 다음 예와 같이 formatter 속성을 설정하도록 로깅 속성 파일을 업데이트합니다. 포맷터를 설정한 핸들러가 이전 단계의 target 핸들러인지 확인하십시오(이 예에서는 java.util.logging.FileHandler ).
New Relic 로그 형식은 트랜잭션과 로그를 함께 연관시키는 데 사용하는 원격 측정 메타데이터가 포함된 JSON입니다. 현재 우리는 해당 형식의 사용자 정의를 지원하지 않습니다.
완료되면 텍스트 대신 JSON이 기록됩니다. JSON은 한 줄에 하나씩 단일 개체로 형식이 지정되어야 하며 log.level 및 thread.name 같은 필드를 포함해야 합니다. 컨텍스트의 로그에 필요한 trace.id 에는 트랜잭션 내에서 발생하는 로그 메시지에 대한 값만 있어야 합니다.
Logs-in-context 확장을 가져오는 가장 직접적인 방법은 이러한 종속성을 Maven의 pom.xml 또는 Gradle의 build.gradle 에 추가하는 것입니다. 이를 통해 패키징 도구가 올바른 종속성을 선택할 수 있습니다.
이러한 파일을 편집할 수 없는 경우 대신 로깅 프레임워크의 구성을 위해 애플리케이션 classpath 에 jar를 직접 추가할 수 있습니다.
NewRelicAsyncAppender 로 로깅 구성 xml 을 업데이트합니다. NewRelicAsyncAppender 가 New Relic의 로그 전달자를 대상으로 하는 모든 어펜더를 래핑하도록 하려면 다음 섹션을 추가하세요. "LOG_FILE" 을 이전 단계에서 업데이트한 어펜더의 이름으로 변경합니다.