如何在C#应用程序中将日志发送到Cloud Watch

问题描述 投票:0回答:2

我希望能够将应用程序日志发送到Cloud Watch Log。并且我知道有一个Cloud Watch Agent服务在后台运行并从日志文件中读取日志并仅将delta(额外日志)发送到Cloud Watch Log。这一切对我都有意义。然后我了解了NLog一个C#日志框架,并在POC下面写了发送日志。

static void Main(string[] args)
{
    ConfigureNLog();
    var logger = NLog.LogManager.GetCurrentClassLogger();
    logger.Info("Hello World");
    logger.Log(LogLevel.Info, "Sample informational message");
}
static void ConfigureNLog()
{
        var accessKey = ConfigurationManager.AppSettings.Get("AWSAccessKey");
        var secretKey = ConfigurationManager.AppSettings.Get("AWSSecretKey");
        var config = new LoggingConfiguration();
        var awsTarget = new AWSTarget()
        {
            LogGroup = "NLog.ProgrammaticConfigurationExample",
            Region = "us-east-1",
            Credentials = new BasicAWSCredentials(accessKey, secretKey)
        };
        config.AddTarget("aws", awsTarget);
        config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, awsTarget));

        LogManager.Configuration = config;
}

现在当我运行上面的代码时,我可以将日志发送到Cloud Watch。但我现在感到困惑,Cloud Watch Agent的重要性在哪里?

  1. 由于我直接发送日志数据,这是否意味着我的方案中不需要Cloud Watch Agent?
  2. 如果我想使用Cloud Watch Agent,那么我需要使用FILE作为NLog的日志目标,然后告诉Cloud Watch Agent将该日志文件发送到Cloud Watch Log?

我的理解是否正确?请帮助我理解流程。

低于流量是否正确?

NLog将日志写入文件 - > Cloud Agent从那里读取日志 - >将日志发送到Cloud Watch

问:如何在上面的POC中使用Cloud Watch Agent通过NLog发送数据?

c# amazon-web-services nlog amazon-cloudwatch amazon-cloudwatchlogs
2个回答
2
投票

Cloud Watch Agent在您的服务器上运行,可以查看生成的日志文件。这些日志文件可以是任何内容,IIS日志,时间日志,事件日志等。更新日志文件后,CWA将获取更新并发送到Cloud Watch。这是CWA的通用行为,非常适合事件日志和操作系统日志记录。

通过修改AWS.EC2.Windows.CloudWatch.json CWA json文件,您可以将其配置为查看某些格式的日志文件,并将更改发送到默认情况下标准/示例之外的CW。您可以将json更新为NLog条目布局格式,并让它监视文件中的特定格式。 CW发送延迟。

现在你有Nlog写日志文件。您可以让NLog将日志条目发送到文件,让Cloud Watch Agent监视该文件,接收更改并发送它,或者您可以让NLog直接将条目发送到CW。由于您是通过NLog目标直接写入CW,因此您不需要将Cloud Agent用于NLog文件。我建议将CWA保留为其他日志文件,如IIS或事件日志。

我想这是一个优先考虑如何做到这一点。我认为NLog Targets with layouts比处理CloudWatch json文件更容易尝试匹配日志格式。我只使用CWA发送我无法控制的日志文件,并使用NLog Target发送我的NLog条目。

如果您需要一个示例,我可以发布一个示例CWA json片段,用于我使用CWA监控的第三方日志文件。


0
投票

当应用程序只需要写入文件时,它就会过着非常简单的生活,几乎没有问题。

当一个应用程序突然必须处理网络流量(超时,断开连接,重试,连接,延迟等)时,它会突然出现排队,占用内存,使用套接字,导致垃圾收集,停顿等问题。并且在崩溃时丢失所有未决的logevents)

根据应用程序的使用寿命和应用程序的严格要求,为其提供简单的生活是非常有用的。让像Cloud Watch Agent这样的朋友担心网络问题。

另见https://github.com/NLog/NLog.Extensions.Logging/wiki/NLog-cloud-logging-with-Azure-function-or-AWS-lambda

© www.soinside.com 2019 - 2024. All rights reserved.