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

时间:2019-03-12 21:55:34

标签: c# amazon-web-services nlog amazon-cloudwatch amazon-cloudwatchlogs

我希望能够将应用程序日志发送到Cloud Watch Log。而且我知道有一个Cloud Watch Agent服务在后台运行,并从日志文件中读取日志,仅将增量(额外日志)发送到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将该日志文件发送到云监视日志?

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

以下流量是否正确?

  

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

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

1 个答案:

答案 0 :(得分:2)

Cloud Watch Agent在您的服务器上运行,并且可以监视生成的日志文件。这些日志文件可以是任何内容,包括IIS日志,时间日志,事件日志等。更新日志文件时,CWA将抓取更新并将其发送到Cloud Watch。这是CWA的一般行为,非常适合事件日志和OS日志记录。

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

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

我想这是您如何做的偏好。我认为带有布局的NLog Targets比处理CloudWatch json文件来尝试并匹配日志格式更容易。我仅使用CWA发送无法控制的日志文件,并使用NLog Target发送我的NLog条目。

如果需要示例,我可以为我使用CWA监视的第三方日志文件发布示例CWA json代码段。