【发布时间】:2021-03-20 02:39:32
【问题描述】:
我有 2 个 EC2 Windows 10 实例。使用 C# 和 AWSSDK.CloudWatchLogs,我可以从其中一个写入 AWS CloudWatch,但不能从另一个写入。我可以用下面的代码复制它:
C#代码:
using System;
namespace AllPurposeDuck
{
class Program
{
private static Logger _log = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
try
{
_log.Info("Quack!");
_log.Debug("Quack!!");
_log.Trace("Quack!!!");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
</configSections>
<nlog throwExceptions="true"
internalLogFile="c:\temp\allpurposeducklog.txt"
internalLogLevel="Info"
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="console" xsi:type="Console" layout="${longdate} | ${level} | ${machinename}| ${message}" />
<target name="aws" xsi:type="AWSTarget" logGroup="Ducks_and_stuff" region="us-west-2" layout="${machinename} ${longdate} | ${level} | ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="console, aws" />
</rules>
</nlog>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
在原本静默失败的机器上,我注意到一个短暂的停顿,并在我的 c:\temp\allpurposeducklog.txt 本地日志文件中看到以下警告:
2021-03-20 01:36:40.7679 Info Shutting down logging...
2021-03-20 01:36:42.2809 Warn Target flush timeout. One or more targets did not complete flush operation, skipping target close.
2021-03-20 01:36:42.2809 Info Logger has been shut down.
另一台机器愉快地向 CloudWatch 发出嘎嘎声(都向控制台发出嘎嘎声)。
故障机器与工作机器位于同一 VPC 中,具有相同的 IAM 角色、可用区和安全组。两台机器都与 CloudWatch 代理一起正常工作,该代理监控 Windows 内存并在内存过低时触发警报。
我很难进一步缩小范围。想法? AWS 中是否有记录失败原因的地方?谢谢。
【问题讨论】:
标签: c# amazon-cloudwatch nlog