.NET 에이전트를 사용하면 다른 뉴렐릭 데이터의 컨텍스트에서 앱 로그를 볼 수 있는 logs in context(를) 얻을 수 있습니다. 이 기능에 대한 일반 정보는 컨텍스트의 APM 로그를 참조하세요.
팁
.Net 로그가 많이 있습니까? 최적화 및 관리 방법에 대한 자습서를확인하십시오.
컨텍스트 옵션의 자동 로그
앱의 로그인 및 연결 메타데이터를 뉴렐릭에 자동으로 보내도록 컨텍스트에 맞게 로그를 구성하는 세 가지 옵션이 있습니다. 에이전트 전달에 사용되는 컨텍스트의 자동 로그에 지원되는 프레임워크는 다음과 같습니다.
프레임워크 | 최소 프레임워크 버전 | 최소 에이전트 버전 |
---|---|---|
Log4Net | .NET 프레임워크: v1.2.10 .NET Core의 경우: v2.0.10 | v9.7.0 |
세릴로그 | .NET 프레임워크: v2.0.0 .NET Core의 경우: v2.5.0 | v9.7.0 |
NLog | .NET 프레임워크: v4.1.0 .NET Core의 경우: v4.5.0 | v9.7.0 |
Microsoft.Extensions.Logging | v3.0.0 | .NET Framework의 경우: 에이전트 v9.7.0 .NET Core의 경우: 에이전트 v10.0.0 |
팁
Sitecore의 많은 버전은 log4net의 포크를 기반으로 하지만 독립적인 Sitecore.Logging을 사용합니다. 이 라이브러리에 대한 지원은 .NET 에이전트 버전 10.14.0에 추가되었습니다.
이것은 가장 간단한 접근 방식이며, 로그 전달자 설정에 대한 액세스 권한이나 관심이 없는 개발자 또는 앱 컨텍스트에서 로그 및 기타 연결 메타데이터의 힘을 확인하려는 계정에 탁월한 선택입니다. 많은 오버 헤드.
이 옵션을 사용하면 로그에 span.id
, trace.id
, hostname
, entity.guid
및 entity.name
가 포함됩니다. 로그 전달 제한에 대해 알아보세요.
로그 포워딩 기능이 있는 에이전트 버전(.NET 에이전트 9.7.0 이상)을 설치하기만 하면 됩니다. 전달이 비활성화된 경우 에이전트 설정 파일에 다음을 추가하여 활성화할 수 있습니다.
<applicationLogging enabled="true"> <forwarding enabled="true" maxSamplesStored="10000" /> <localDecorating enabled="false" /></applicationLogging>
환경 변수:
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
중요
환경 변수 값(있는 경우)이 구성 파일 값보다 우선합니다.
에이전트 버전 9.8.0부터 이 기능은 기본적으로 활성화되어 있습니다.
에이전트 버전 10.4.0부터 에이전트는 로그 이벤트에서 컨텍스트 데이터(사용자 정의 속성) 캡처 및 전달도 지원합니다. 이 하위 기능은 기본적으로 비활성화되어 있습니다. 활성화하려면 다음 구성을 사용하십시오.
<applicationLogging enabled="true"> <forwarding enabled="true" maxSamplesStored="10000"> <contextData enabled="true" include="" exclude="" /> </forwarding> <localDecorating enabled="false" /></applicationLogging>
환경 변수:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=false
New Relic은 "context" 접두사가 붙은 컨텍스트 데이터를 사용합니다. 예를 들어 New Relic에 대한 값이 myValue
인 myKey
이라는 사용자 정의 로그 속성은 context.myKey : myValue
입니다.
우리가 계측하는 .NET 로깅 라이브러리는 일반적으로 각 로그 이벤트에 Dictionary<string,object>
로 컨텍스트 데이터 키-값 쌍을 저장합니다. New Relic으로 보내기 전에 값을 문자열로 변환하기 위해 먼저 Newtonsoft.Json.JsonConvert.SerializeObject
사용하려고 시도합니다. 실패하면 객체에서 .ToString()
호출을 시도합니다. 최후의 수단으로 유형 이름을 보내드립니다.
include
및 exclude
구성 옵션을 사용하여 컨텍스트 데이터를 필터링할 수 있습니다. 쉼표로 구분된 속성 이름 목록입니다. 둘 다의 기본값은 빈 문자열입니다. 빈 include
필드는 "모두 포함"을 의미합니다. 이러한 포함/제외 옵션은 다른 에이전트 속성 구성 옵션과 동일한 규칙을 따릅니다.
예를 들어 "apple"을 제외하고 "a"로 시작하는 모든 속성을 포함하고 "banana"를 제외하고 "b"로 시작하는 모든 속성을 제외하려면 다음 구성을 사용합니다.
<applicationLogging enabled="true"> <forwarding enabled="true" maxSamplesStored="10000"> <contextData enabled="true" include="a*, banana" exclude="b*, apple" /> </forwarding> <localDecorating enabled="false" /></applicationLogging>
환경 변수:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_INCLUDE="a*, banana"NEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_EXCLUDE="b*, apple"NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=false
Optional adjustments:
로그 전달이 활성화되면 매분 New Relic에 전송되는 최대 로그 수를 제어할 수 있습니다.기본값은 10,000입니다.60초 동안 10,000개 이상의 로그가 수신되면 로그 샘플링이 시작됩니다.
더 많은 로그를 수신하려면 더 높은 숫자로 설정하십시오. 더 적은 수의 로그를 수신하려면 더 낮은 숫자로 설정하십시오. 모든 정수가 유효합니다.
<applicationLogging enabled="true"> <forwarding enabled="true" maxSamplesStored="10000" /> <localDecorating enabled="false" /></applicationLogging>
환경 변수:
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
중요
환경 변수 값(있는 경우)이 구성 파일 값보다 우선합니다.
기존 로그 포워딩 솔루션이 있고 컨텍스트에서 자동 로그인을 사용하도록 에이전트를 업데이트하는 경우 disable your manual log forwarder 를 확인하세요. 그렇지 않으면 앱이 이중 로그 라인을 전송하게 됩니다. 귀하의 계정에 따라 이중 청구가 발생할 수 있습니다. 자세한 내용을 보려면 특정 로그 전달자를 비활성화하는 절차를 따르십시오.
이미 마음에 드는 로그 포워더가 있습니까? 우리는 당신을 덮었습니다! 언어 에이전트는 자동 로그인 컨텍스트 기능에 대한 액세스를 제공하는 데 필요한 연결 메타데이터로 로그를 장식할 수 있습니다.
이 옵션은 에이전트 내 전달과 함께 사용하면 안 됩니다. 에이전트 내 전달이 활성화된 상태에서 외부 로그 전달자 를 사용하여 New Relic에 로그를 전송하면 로그가 New Relic에 최대 두 번 전송됩니다. 계정에 따라 이중 청구가 발생할 수 있습니다.
중요
.NET 에이전트의 로컬 로그 장식은 로그 메시지를 직접 변경하지 않습니다. 메시지에 NR-LINKING
토큰을 작성하려면 로깅 프레임워크 구성을 업데이트해야 합니다. log4net 및 Serilog의 JSON 출력의 경우 추가 구성 또는 코드가 필요합니다.
이 옵션을 사용하려면 에이전트 내 전달 구성 옵션을 비활성화해야 합니다.
구성에서 로그 데코레이션을 활성화한 다음 에이전트를 다시 시작하여 로그 데코레이션을 시작합니다.
<applicationLogging enabled="true"><forwarding enabled="false" /><localDecorating enabled="true" /></applicationLogging>환경 변수:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=falseNEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=true중요
환경 변수 값(있는 경우)이 구성 파일 값보다 우선합니다.
데코레이터는 모든 로그
message
(일반 텍스트)에entity.guid
,entity.name
,hostname
,trace.id
및span.id
의 5가지 속성을 추가합니다. 예:This is my log message. NR-LINKING|{entity.guid}|{hostname}|{trace.id}|{span.id}|{entity.name}중요
JSON의 경우
NR-LINKING
데이터는message
속성에 있어야 합니다.로그 메시지가 비어 있거나 공백인 경우, 출력 메시지도 비어 있게 됩니다. 예:
NR-LINKING|{entity.guid}|{hostname}|{trace.id}|{span.id}|{entity.name}|.출력 로그 메시지는 빈 문자열입니다.
로그가 트랜잭션 외부에서 발생했거나 애플리케이션 컨텍스트에 적용할 수 없는 경우 일부 속성은 비어 있을 수 있습니다. 데코레이팅 포맷터를 사용하려면 수동 프로세스보다 이 옵션을 사용하는 것이 좋습니다.
중요
키 이름에 하이픈을 허용하지 않는 로깅 프레임워크를 지원하기 위해 로깅 프레임워크에서
NR-LINKING
토큰을 읽는 데 사용되는 키는NR_LINKING
가 아닌NR-LINKING
입니다.log4net 구성
log4net의 경우 .NET 에이전트는
NR-LINKING
토큰을 로그 이벤트 개체에NR_LINKING
이라는 속성으로 저장합니다. 다음 일반적인 레이아웃 예는NR-LINKING
토큰을 작성하도록 log4net을 구성하는 방법을 보여줍니다. 다른 레이아웃도 지원되지만 아래에는 나열되지 않습니다. SimpleLayout은 변경할 수 없으므로 지원되지 않습니다.PatternLayout
/DynamicPatternLayout
: 줄 끝에NR_LINKING
속성을 포함하도록conversionPattern
를 업데이트합니다.<layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message %property{NR_LINKING}%newline %exception" /></layout>log4net.Ext.Json
: 메시지 JSON 속성에NR_LINKING
이라는 멤버를 포함하도록 레이아웃을 업데이트합니다.log4net.Appender.AdoNetAppender
: 이 어펜더는 다른 레이아웃과 약간 다른 설정을 가지고 있습니다. 메타데이터를 포함하려면message
보고서를 업데이트해야 합니다. 다음 예에서는PatternLayout
을 사용하여 이를 보여줍니다.<parameter><parameterName value="@message" /><dbType value="String" /><size value="4000" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%message %property{NR_LINKING}" /></layout></parameter>Serilog 구성
Serilog의 경우 .NET 에이전트는
NR-LINKING
토큰을 로그 이벤트 개체에NR_LINKING
이라는 속성으로 저장합니다. 다음 일반적인 포맷터 및 싱크 예제는NR-LINKING
토큰을 작성하도록 Serilog를 구성하는 방법을 보여줍니다. 다른 싱크 및 포맷터도 지원되지만 아래 나열되지는 않습니다.Plain text using an
outputTemplate
: 줄 끝에NR_LINKING
속성을 포함하도록outputTemplate
를 업데이트합니다.Log.Logger = new LoggerConfiguration().MinimumLevel.Override("Microsoft", LogEventLevel.Information).Enrich.FromLogContext().WriteTo.File(path: @"plaintext_log.txt",fileSizeLimitBytes: 1_000_000,rollOnFileSizeLimit: true,shared: true,flushToDiskInterval: TimeSpan.FromSeconds(1),outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj} {NR_LINKING} {NewLine}{Exception}").CreateLogger();JSON Formatter with automatic property output: 기본 JsonFormatter는 메시지 속성에
NR_LINKING
메타데이터를 쓰지 않습니다. 대신 각 속성을 자체 JSON 개체에 씁니다. 컨텍스트의 로그가 작동하려면 먼저message
속성의 끝에NR_LINKING
데이터를 쓰도록 사용자 정의 JSON 포맷터를 만들어야 합니다.Microsoft.Extensions.Logging 구성
Microsoft.Extensions.Logging의 경우 .NET 에이전트는 새로 생성된 범위에 메시지와 함께
NR-LINKING
토큰을 저장합니다. Microsoft.Extensions.Logging은 출력을 위해 다른 프레임워크를 사용하므로 자세한 내용은 위의 log4net 또는 Serilog 구성을 참조하세요.NLog 구성
NLog의 경우 .NET 에이전트는
NR-LINKING
토큰을 메시지 끝에 직접 자동으로 추가할 수 있으므로 추가 구성이 필요하지 않습니다.
언어 에이전트가 로그를 전달하고 장식할 수 있기 전에는 연결 메타데이터를 보내도록 애플리케이션을 업데이트하여 컨텍스트에서 로그를 활성화할 수 있었습니다.
이 옵션은 계속 지원되지만 더 이상 권장되지 않습니다. 이 접근 방식을 사용하는 방법에 대한 지침 은 컨텍스트 옵션에서 수동 로그인을 참조하세요.
또한 이 방법을 사용하려면 컨텍스트에서 로그를 활성화하기 전에 로그 전달자를 설치해야 합니다. 로그 전달자가 없는 경우 New Relic UI는 인프라 에이전트 를 사용하라는 메시지를 표시합니다.
기존 로그 포워딩 솔루션을 사용하기로 결정하고 나중에 컨텍스트에서 자동 로그를 사용하도록 에이전트를 업데이트하기로 결정한 경우 disable your manual log forwarder 를 확인하세요. 그렇지 않으면 앱이 이중 로그 라인을 전송하게 됩니다. 귀하의 계정에 따라 이중 청구가 발생할 수 있습니다. 자세한 내용을 보려면 특정 로그 전달자를 비활성화하는 절차를 따르십시오.
이 문서가 설치하는데 도움이 되셨나요?
데이터 보호
로그에는 HIPAA 또는 기타 규정 준수 프로토콜로 보호되는 민감한 정보가 포함될 수 있습니다. 기본적으로 신용 카드 또는 사회 보장 번호와 같은 항목에 대해 표시되는 번호 패턴을 난독화하지만 추가 정보를 해시하거나 마스킹해야 할 수도 있습니다.
자세한 내용은 난독화 표현식 및 규칙을 참조하십시오. New Relic UI를 사용하거나 GraphQL API인 NerdGraph를 사용하여 로그 데이터를 해시하거나 마스킹할 수 있습니다.
데이터 탐색
로깅 데이터를 최대한 활용하려면:
- APM Summary 페이지 에서 Web transaction time 차트를 클릭하면 특정 시점과 관련된 로그를 볼 수 있습니다.
- 오류와 관련된 로그를 보려면 앱의 Errors inbox 확인하세요.
- 분산 추적 을 사용하여 개별 추적과 연결된 로그를 확인합니다.
- 로그 UI를사용하여 플랫폼 전체에서 더 많은 로깅 데이터를 탐색하십시오.
- 로그 출력 및 심각도에 따라 경고 를 설정합니다.
- 로그 데이터용 특수 UI를 사용 하여 데이터를 쿼리 하고 결과가 포함된 대시보드를 만드 십시오.
문제 해결 팁
일반적으로 컨텍스트에서 APM 로그를 활성화한 후 1분 이내에 로그가 표시되기 시작합니다. 앱의 Triage > Logs 섹션을 확인하세요. 또한 오류와 관련된 로그 패턴 도 표시되기 시작합니다.
오류 또는 추적에 대한 로그가 표시되지 않으면 앱에 대한 로그가 없을 수 있습니다. UI 페이지를 새로고침하거나 선택한 기간 을 변경하세요.
자동 로깅 비활성화
컨텍스트의 APM 로그는 에이전트 로그 데이터를 자동으로 전달하며 기본적으로 활성화됩니다. 이는 보안, 규정 준수, 청구 또는 시스템 성능에 부정적인 영향을 미칠 수 있습니다. 자세한 내용을 보거나 기본 설정을 조정해야 하는 경우 자동 로깅을 비활성화 하는 절차를 따르세요.
컨텍스트 옵션의 수동 로그인
.NET에 대한 컨텍스트에서 로그를 설정하기 위해 수동 프로세스를 사용해야 하는 경우 다음 단계를 따르십시오.
- New Relic 에서 이미 로그인을 설정 했는지 확인하십시오. 여기에는 애플리케이션 로그를 수집하고 New Relic으로 전달되는 메타데이터를 확장하는 지원되는 로그 전달자 구성이 포함됩니다.
- 최신 .NET 에이전트 버전을 설치 하거나 업데이트 하고 분산 추적을 활성화합니다 . 컨텍스트의 로그에는 .NET 에이전트 버전 8.21 이상 및 New Relic .NET 에이전트 API 버전 8.21 이상 을 사용하십시오.
- Microsoft .NET Framework 4.5 이상 또는 .NET Core 2.0 이상을 설치하거나 업데이트합니다.
- 다음을 포함하여 로그 데이터를 보강하려면 다음 로깅 확장 프로그램을 설치 및 구성하십시오.
- New Relic UI에서 로그 데이터를 확인하세요.
log4net 확장 구성
Apache log4net 버전 2.0.8 이상 확장을 사용하여 나머지 New Relic 플랫폼의 관련 데이터와 로그 데이터를 연결할 수 있습니다.
다음 다이어그램은 Apache log4net을 통한 로그 메시지의 흐름을 보여주며 New Relic log4net 확장의 특정 구성 요소를 강조 표시합니다. 많은 로그 전달자를 사용할 수 있습니다. 이 예제에서는 Fluentd 를 사용합니다.
Appender: NewRelicAppender
는 .NET 에이전트(API 사용)의 상황별 정보를 애플리케이션에서 생성된 로그 이벤트에 추가합니다. 링킹 데이터 데이터로 알려진 이 상황별 정보는 뉴렐릭이 해당 이벤트가 생성된 프로세서 및 범위에 링크하는 데 사용됩니다. 이 어펜더는 추가 처리를 위해 강화된 로그 이벤트를 다운스트림 어펜더에 전달합니다.
NewRelicAppender
은 ForwardingAppender
유형이므로 체인의 첫 번째 appender여야 합니다. 또한 작동하려면 실제 출력 대상에 자식으로 쓸 수 있는 또 다른 어펜더가 필요합니다.
Layout: NewRelicLayout
는 보강된 로그 이벤트의 형식을 뉴렐릭이 예상하는 JSON 형식으로 지정합니다. 이 레이아웃이 할당된 어펜더는 로그 전달자가 예상하는 위치의 파일에 JSON을 출력하도록 log4net에 지시합니다.
Log Forwarder: 로그 전달자는 출력 폴더를 모니터링하고 적절하게 형식화되고 강화된 로그 정보를 뉴렐릭 로깅 엔드포인트로 점진적으로 보냅니다.
Log4net은 appender
및 layout
을 사용하여 로그 메시지를 저장하고 형식을 지정합니다. NewRelicAppender
는 애플리케이션에 연결된 경우 New Relic .NET 에이전트의 컨텍스트 정보로 로그 메시지를 보강합니다. 어펜더는 풍부한 로그 메시지를 다운스트림 어펜더로 전달하여 로그 메시지의 특정 사용 사례를 처리합니다.
log4net을 사용한 로깅에 대한 자세한 내용은 Apache log4net 시작하기 설명서를 참조하십시오.
log4net 확장을 사용하여 컨텍스트에서 로그를 구성하려면:
Visual Studio NuGet 패키지 관리자 를 사용하여
NewRelic.LogEnrichers.Log4Net
패키지를 찾아 설치합니다.log4net 구성 파일에서
NewRelicAppender
을 첫 번째 수준의 appender로 사용하고 기존 appender를 하위 항목으로 참조하도록 로깅 구성을 업데이트합니다. 또한 로그 메시지를 출력 대상에 쓰는 어펜더의 레이아웃을NewRelicLayout
로 바꿉니다.다음 log4net 구성 예제는 New Relic 연결 메타데이터로 로그 이벤트를 강화합니다. 기존 로그 파일 외에도 로그 전달자가 사용할 수 있도록
C:\logs\log4netExample.log.json
에서 특정 JSON 형식의 새 로그 파일을 출력합니다.<log4net><root><level value="ALL" /><appender-ref ref="NewRelicAppender" /></root><appender name="NewRelicAppender" type="NewRelic.LogEnrichers.Log4Net.NewRelicAppender, NewRelic.LogEnrichers.Log4Net" ><threshold value="ALL"/><appender-ref ref="FileAppender" /></appender><appender name="FileAppender" type="log4net.Appender.FileAppender"><file value="C:\logs\log4netExample.log.json" /><param name="AppendToFile" value="true" /><layout type="NewRelic.LogEnrichers.Log4Net.NewRelicLayout, NewRelic.LogEnrichers.Log4Net"></layout></appender></log4net>log4net 확장을 구성하고 로깅 파일을 업데이트한 후 New Relic으로 데이터를 보내도록 확장을 구성할 수 있습니다. 로그를 전달하는 데는 여러 가지 옵션이 있습니다. 다음은 컨텍스트 내 로그용 인프라 에이전트를 사용하는 구성의 예입니다.
logs:- name: application-logfile: C:\logs\log4netExample.log.json # Path to a single log file
NLog 확장 구성
NLog 4.5 이상 확장을 사용하여 나머지 New Relic 플랫폼의 관련 데이터와 함께 로그 데이터에 연결할 수 있습니다.
New Relic NLog 확장 은 New Relic 로깅 엔드포인트에 필요한 방식으로 로그 이벤트의 형식을 지정하는 NewRelicJsonLayout
를 제공합니다. 그런 다음 애플리케이션에 연결될 때 .NET 에이전트에서 컨텍스트 정보를 추가합니다. 그런 다음 출력 폴더에 로깅 데이터를 쓰도록 대상을 구성할 수 있습니다. 로그 전달자는 이 폴더를 모니터링하고 로그 정보를 New Relic에 점진적으로 보낼 수 있습니다.
다음 다이어그램은 NLog를 통한 로그 메시지의 흐름을 보여주며 New Relic NLog 확장의 특정 구성 요소를 강조 표시합니다.
New Relic JSON Layout: NewRelicJsonLayout
는 .NET 에이전트( API 사용)의 상황별 정보를 특수에서 생성된 로그 이벤트에 추가하고 뉴렐릭이 예상하는 JSON 형식으로 로그메시지를 출력합니다. 메타데이터 연결로 알려진 이 상황별 정보는 뉴렐릭이 프로세서 및 해당 이벤트가 생성된 범위에 연결하는 데 사용됩니다.
NewRelicAppender
은 ForwardingAppender
유형이므로 체인의 첫 번째 appender여야 합니다. 또한 작동하려면 실제 출력 대상에 자식으로 쓸 수 있는 또 다른 어펜더가 필요합니다.
File Target: FileTarget
은 로그 메시지가 기록되는 디스크의 파일을 정의합니다. 여기에 NewRelicJsonLayout
을 추가하면 목표는 뉴렐릭으로 전달할 수 있도록 출력 형식을 올바르게 지정할 수 있습니다.
Log Forwarder: 로그 전달자는 FileTarget
출력의 올바른 형식과 보강된 로그 데이터를 뉴렐릭 로깅 엔드포인트로 보내도록 구성되어 있습니다.
NLog를 사용한 로깅에 대한 자세한 내용은 nlog-project.org 설명서 를 참조하십시오.
NLog 4.5 이상 확장을 사용하여 나머지 New Relic 플랫폼의 관련 데이터와 함께 로그 데이터에 연결하십시오.
Visual Studio NuGet 패키지 관리자 를 사용하여
NewRelic.LogEnrichers.NLog
패키지를 찾아 설치합니다.디버그 코드에서 로깅 설정을 업데이트하여
NewRelicJsonLayout
을 추가하고 MappedDiagnosticsContext(MDC) 또는 MappedDiagnosticsLogicalContext(MDLC) 데이터를 수집할지 결정합니다.다음 구성 예제는 디스크에 기록되는 새 JSON 파일을 생성합니다. 이러한 구성 옵션 중 일부는 사용된 디스크 공간의 양 및/또는 대상의 성능을 관리하는 데 유용할 수 있습니다.
archiveAboveSize
maxArchiveFiles
bufferSize
enableArchiveFileCompression
autoFlush
concurrentWrites
NLog AsyncWrapper Target 이 필수는 아니지만 다른 스레드에서 로그 파일의 형식 지정 및 출력을 수행하여 성능을 향상시키는 데 도움이 될 수 있습니다.
Don't collect MDC or the MDLC data (default):
다음 코드 예제는 New Relic 연결 메타데이터를 사용하여 로그 이벤트를 강화하지만 MDC 또는 MDLC 데이터를 사용하지 않습니다. 기존 로그 파일 외에도 로그 전달자가 사용할 수 있도록
C:\logs\NLogExample.log.json
에서 특정 JSON 형식의 새 로그 파일을 출력합니다.var loggerConfig = new LoggingConfiguration();var newRelicFileTarget = new FileTarget("NewRelicFileTarget");newRelicFileTarget.Layout = new NewRelicJsonLayout();newRelicFileTarget.FileName = "C:\logs\NLogExample.json";loggerConfig.AddTarget(newRelicFileTarget);loggerConfig.AddRuleForAllLevels("NewRelicFileTarget");LogManager.Configuration = loggerConfig;var logger = LogManager.GetLogger("Example");Collect MDC or the MDLC data:
애플리케이션이 MDC 또는 MDLC를 사용하는 경우 이러한 컬렉션에 항목을 포함하도록
NewRelicJsonLayout
을 구성할 수 있습니다. 다음 코드 예제에서는 MDC 및 MDLC 데이터를 수집할 수 있도록 추가 구성을 추가합니다. 이전 예에서와 같이 로그 전달자가 사용하기 위해C:\logs\NLogExample.log.json
에서 특정 JSON 형식의 새 로그 파일을 출력합니다.var loggerConfig = new LoggingConfiguration();var newRelicFileTarget = new FileTarget("NewRelicFileTarget");var newRelicLayout = new NewRelicJsonLayout{IncludeScopeProperties = true};newRelicFileTarget.Layout = newRelicLayout;newRelicFileTarget.FileName = @"C:\logs\NLogExample.json";loggerConfig.AddTarget(newRelicFileTarget);loggerConfig.AddRuleForAllLevels("NewRelicFileTarget");LogManager.Configuration = loggerConfig;var logger = LogManager.GetLogger("Example");NLog 확장을 구성하고 로깅 파일을 업데이트한 후에는 New Relic으로 데이터를 보내도록 확장을 구성할 수 있습니다. 로그를 전달하는 데는 여러 가지 옵션이 있습니다. 다음은 컨텍스트 내 로그용 인프라 에이전트를 사용하는 구성의 예입니다.
logs:- name: application-logfile: C:\logs\log4netExample.log.json # Path to a single log file
파일 기반 구성 공급자를 사용하여 New Relic NLog 확장을 구성할 수도 있습니다. 다음 예제 코드는 App.config
파일에 포함된 설정을 기반으로 로거를 만듭니다.
Instantiating Logger using .config
file
var logger = LogManager.GetLogger("NewRelicLog");logger.Info("Hello, New Relic!");
Sample App.config
file
<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <extensions> <add assembly="NewRelic.LogEnrichers.NLog" /> </extensions> <targets> <target name="NewRelicLogFile" xsi:type="File" fileName="C:/path/to/NewRelicLog.json"> <layout xsi:type="newrelic-jsonlayout"> </layout> </target> </targets> <rules> <logger name="NewRelicLog" minlevel="Info" writeTo="newRelicLogFile" /> </rules> </nlog></configuration>
Serilog 2.5 이상 확장 구성
Serilog 확장을 사용하여 나머지 New Relic 플랫폼의 관련 데이터와 함께 로그 데이터에 연결할 수 있습니다. 이를 위해서는 다음이 필요합니다.
Serilog는 애플리케이션의 로그 메시지를 기록하고 메시지 데이터를 저장하기 위해 LogEvent
을 생성하는 구조화된 로깅 프레임워크입니다. Enrichers 를 사용하여 로그 이벤트에 추가 정보를 추가할 수 있습니다. 싱크 및 포맷터 를 사용하면 다운스트림 소비 및 보기를 위해 해당 로그 이벤트의 형식을 지정하고 출력할 수 있습니다.
다음 다이어그램은 New Relic Serilog 확장의 특정 구성 요소를 강조 표시하여 Serilog를 통한 로그 메시지의 흐름을 보여줍니다. 많은 로그 전달자를 사용할 수 있습니다. 이 예제에서는 Fluentd 를 사용합니다.
New Relic Enricher: NewRelicEnricher
는 .NET 에이전트(API 사용)의 상황별 정보를 애플리케이션에서 생성된 로그 이벤트에 추가합니다. 링킹 메타데이터라고 불리는 이 상황별 정보는 뉴렐릭이 프로세서 및 해당 이벤트가 생성된 범위에 링크하는 데 사용됩니다.
New Relic Formatter: NewRelicFormatter
는 보강된 로그 이벤트를 뉴렐릭이 예상하는 JSON 형식으로 변환합니다. 싱크는 로그 전달자가 예상하는 위치의 파일에 JSON을 출력하도록 Serilog에 지시합니다.
New Relic Log Forwarder: 로그 전달자는 FileTarget
출력의 올바른 형식과 보강된 로그 데이터를 뉴렐릭 로깅 엔드포인트로 보내도록 구성되어 있습니다.
Serilog 로그 이벤트에 대한 자세한 내용은 GitHub의 Serilog 설명서를 참조하십시오.
Serilog 확장을 사용하여 컨텍스트에서 로그를 구성하려면:
Visual Studio NuGet 패키지 관리자 를 사용하여
NewRelic.LogEnrichers.Serilog
패키지를 찾아 설치합니다.애플리케이션 코드에서 로깅 구성을 업데이트하여
NewRelicEnricher
및NewRelicFormatter
를 추가합니다.다음 코드 예제는 New Relic 연결 메타데이터로 로그 이벤트를 강화합니다. 기존 로그 파일 외에도 로그 전달자가 사용할 수 있도록
C:\logs\SerilogExample.log.json
에서 특정 JSON 형식의 새 로그 파일을 출력합니다.var loggerConfig = new LoggerConfiguration();loggerConfig.Enrich.WithThreadName().Enrich.WithThreadId().Enrich.WithNewRelicLogsInContext().WriteTo.File( path: @"C:\logs\ExistingLoggingOutput.txt").WriteTo.File(formatter: new NewRelicFormatter(),path: @"C:\logs\SerilogExample.log.json");var log = loggerConfig.CreateLogger();이 구성으로 인해 디스크에 기록되는 새 JSON 파일이 생성됩니다. 이러한 구성 옵션 중 일부는 사용된 디스크 공간 및/또는 싱크 성능을 관리하는 데 유용할 수 있습니다.
restrictedToMinimumLevel
buffered
rollingInterval
rollOnFileSizeLimit
retainedFileCountLimit
필수는 아니지만 Serilog 비동기식 싱크 래퍼 를 사용하면 다른 스레드에서 로그 파일의 형식 지정 및 출력을 수행하여 성능을 향상시키는 데 도움이 될 수 있습니다.
Serilog 확장을 구성하고 로깅 파일을 업데이트한 후에는 로그를 전달하기 위한 몇 가지 옵션이 있습니다. 다음은 컨텍스트 내 로그용 인프라 에이전트를 사용하는 구성의 예입니다.
logs:- name: application-logfile: C:\logs\log4netExample.log.json # Path to a single log file
파일 기반 구성 공급자를 사용하여 New Relic Serilog 확장을 구성할 수도 있습니다. 다음과 같은 추가 NuGet 패키지가 필요합니다.
Serilog.Settings.Configuration
다음 예제 코드는
appSettings.json
파일에 포함된 설정을 기반으로 로거를 생성합니다.Instantiating logger using
appsettings.json
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");var configuration = builder.Build();var logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger();Sample
appsettings.json
file{"Serilog": {"Using": ["Serilog.Sinks.Console","Serilog.Sinks.File","NewRelic.LogEnrichers.Serilog"],"MinimumLevel": "Debug","Enrich": ["WithNewRelicLogsInContext"],"WriteTo": [{"Name": "File","Args": {"path": "C:\\Logs\\SerilogExample.log.json","formatter": "NewRelic.LogEnrichers.Serilog.NewRelicFormatter, NewRelic.LogEnrichers.Serilog"}}],"Properties": {"Application": "NewRelic Logging Serilog Example"}}}다음 예제 코드는
web.config
파일에 포함된 설정을 기반으로 로거를 만듭니다. Serilog.Settings.AppSettings NuGet 패키지가 필요합니다.Instantiating logger using
.config
filevar logger = new LoggerConfiguration().ReadFrom.AppSettings().CreateLogger();Sample
web.config
file<?xml version="1.0" encoding="utf-8"?><configuration><appSettings><add key="serilog:using:NewRelic" value="NewRelic.LogEnrichers.Serilog" /><add key="serilog:using:File" value="Serilog.Sinks.File" /><!--Add other enrichers here--><add key="serilog:enrich:WithNewRelicLogsInContext" /><add key="serilog:write-to:File.path" value="C:\logs\SerilogExample.log.json" /><add key="serilog:write-to:File.formatter" value="NewRelic.LogEnrichers.Serilog.NewRelicFormatter, NewRelic.LogEnrichers.Serilog" /></appSettings>