.NET을 AWS CloudWatch에 로깅: NLog 사용
12452 단어 awsdotnetdotnet6awscloudwatch
동영상
전제 조건
AWS 계정
.NET 애플리케이션에서 AWS CloudWatch로 로그를 푸시하는 데 사용할 수 있는 활성 AWS 계정이 필요합니다. 볼륨이 최소이므로 AWS CloudWatch의 프리 티어를 초과해서는 안 됩니다.
아직 AWS 계정이 없다면 여기에서 가입할 수 있습니다.
AWS 프로필
이 기사는 AWS CloudWatch에만 초점을 맞추고 있으므로 .NET 애플리케이션에서 AWS 자격 증명을 구성하지 않습니다. 대신 AWS SDK가 AWS CLI를 실행할 때 설정된 AWS 프로필을 자동으로 사용하도록 할 것입니다. 이렇게 하면 권한과 자격 증명을 뒤적일 필요가 없으므로 데모가 간단해집니다.
그러나 AWS 모범 사례에 따라 최소한의 권한으로 프로덕션 환경에서 애플리케이션에 고유한 IAM 역할/사용자를 항상 부여해야 합니다.
갑시다!
이제 시작하겠습니다!
1. 새 콘솔 애플리케이션 생성
.NET 6 콘솔 애플리케이션에서 이 데모를 실행합니다. Visual Studio 2022 또는 .NET 6 CLI를 사용하여 만들 수 있습니다. Visual Studio 2022를 사용할 예정입니다.
2. NLog 패키지 추가 및 로거 설정
먼저 NLog Nuget 패키지를 추가하고 기본 로거를 설정해 보겠습니다. 그런 다음 AWS CloudWatch에도 기록하도록 이 로거를 구성합니다.
NLog Nuget 패키지를 설치합니다(작성 당시 4.7.13).
이제 NLog를 구성하고 일부 메시지를 콘솔에 기록하여 구성을 테스트할 수 있습니다.
Program.cs
using NLog;
using NLog.Config;
using NLog.Targets;
// Setup the NLog configuration
var config = new LoggingConfiguration();
config.AddRule(LogLevel.Trace, LogLevel.Fatal, new ConsoleTarget());
LogManager.Configuration = config;
// Create a new logger and test it
var log = LogManager.GetCurrentClassLogger();
log.Trace("Writing introduction message...");
log.Info("Hi there! How are you?");
log.Trace("Wrote introduction message!");
다음 출력이 표시되어야 합니다.
3. AWS.Logger.NLog 설치
AWS는 NLog가 AWS CloudWatch에 직접 로그인할 수 있는 매우 훌륭한 NLog Target 라이브러리를 제공합니다. 지금 설치합시다(글을 쓰는 시점에 3.0.0을 설치하고 있습니다).
4. 로거에서 AWS CloudWatch 대상 설정
이제 AWS CloudWatch용 NLog 대상을 생성할 수 있으며 로거도 여기에서 로그인을 시작해야 합니다!
Program.cs
using NLog;
using NLog.AWS.Logger;
using NLog.Config;
using NLog.Targets;
// Setup the NLog configuration
var config = new LoggingConfiguration();
config.AddRule(LogLevel.Trace, LogLevel.Fatal, new ConsoleTarget());
// Add the AWS Target with minimal configuration
config.AddRule(LogLevel.Trace, LogLevel.Fatal, new AWSTarget()
{
LogGroup = "/dotnet/logging-demo/nlog"
});
LogManager.Configuration = config;
// Create a new logger and test it
var log = LogManager.GetCurrentClassLogger();
log.Trace("Writing introduction message...");
log.Info("Hi there! How are you?");
log.Trace("Wrote introduction message!");
프로그램을 실행하면 AWS CloudWatch에 다음 로그가 표시됩니다.
5. (선택 사항) AWS CloudWatch 대상 사용자 지정
NLog용 AWS Target에 대한 구성을 사용자 지정할 수 있습니다. 사용할 수 있는 몇 가지 구성 옵션을 살펴보겠습니다.
Program.cs
using Amazon.Runtime;
using NLog;
using NLog.AWS.Logger;
using NLog.Config;
using NLog.Layouts;
using NLog.Targets;
// Setup the NLog configuration
var config = new LoggingConfiguration();
config.AddRule(LogLevel.Trace, LogLevel.Fatal, new ConsoleTarget());
// Add the AWS Target with minimal configuration
config.AddRule(LogLevel.Trace, LogLevel.Fatal, new AWSTarget()
{
LogGroup = "/dotnet/logging-demo/nlog",
// (Optional) How often batches of log messages should be pushed to AWS CloudWatch
BatchPushInterval = TimeSpan.FromSeconds(3),
// (Optional) Whether NLog should try create the log group if it does not exist or not
DisableLogGroupCreation = false,
// (Optional) The maximum number of log events that are kept in memory before being pushed to
// AWS CloudWatch
MaxQueuedMessages = 10000,
// (Optional) A string to prefix log stream names with
LogStreamNamePrefix = "Prefix",
// (Optional) A string to suffix log stream names with
LogStreamNameSuffix = "Suffix",
// (Optional) AWS credentials that should be used to log into AWS and access AWS CloudWatch
// Credentials = new BasicAWSCredentials(accessKey, secretKey), (Optional) The region that AWS
// CloudWatch logs should be logged in. In this case it defaults to the AWS Profile's region
Region = "af-south-1",
// (Optional) Custom layout that should be used when formatting log messages
Layout = new SimpleLayout("[${date} ${level:uppercase=true:truncate=3}] ${message} ${exception}")
});
LogManager.Configuration = config;
// Create a new logger and test it
var log = LogManager.GetCurrentClassLogger();
log.Trace("Writing introduction message...");
log.Info("Hi there! How are you?");
log.Trace("Wrote introduction message!");
폐쇄
보시다시피 기존 .NET 로깅 라이브러리를 사용하여 AWS CloudWatch에 로깅하는 것은 매우 간단합니다. 이 기사에서는 AWS CloudWatch를 NLog와 통합하는 것이 얼마나 쉬운지 시연했습니다. 이는 이미 NLog를 사용하는 애플리케이션이 있을 때 특히 유용합니다.
NLog에 대해 자세히 알아보려면 해당 설명서here를 볼 수 있습니다. 또한 NLog용 AWS Targethere에 대해 자세히 알아볼 수 있습니다.
Reference
이 문제에 관하여(.NET을 AWS CloudWatch에 로깅: NLog 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ivankahl/logging-net-to-aws-cloudwatch-using-nlog-4me0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)