如何使用json配置Serilog登录到Cloudwatch

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

我想通过json配置将Serilog日志记录配置为云监视。我有一个简单的WPF应用程序和Serilog记录器包装器类。但是,当我运行该应用程序时,它不会记录到cloudwatch日志中。如果您能指导我如何存储AWS凭证并将其传递给Logger Coniguration,也将不胜感激。

下面是我的Serilog包装器类,

public class SerilogLogger : ILog
{
    private readonly ILogger _logger;

    public SerilogLogger(IConfiguration configuration)
    {
        _logger = new LoggerConfiguration()
            .ReadFrom.Configuration(configuration)
            .CreateLogger();
        Log.Logger = _logger;
    }

    public void Debug(string format, params object[] args)
    {
        _logger.Debug(format, args);
    }

    public void Error(Exception ex)
    {
        _logger.Error(ex,"Error");
    }

    public void Error(Exception ex, string format, params object[] args)
    {
        _logger.Error(ex, format, args);
    }

    public void Fatal(Exception ex, string format, params object[] args)
    {
        _logger.Fatal(ex, format, args);
    }

    public void Info(string format, params object[] args)
    {
        _logger.Information(format,args);
    }

    public void Trace(string format, params object[] args)
    {
        _logger.Verbose(format, args);
    }

    public void Warn(string format, params object[] args)
    {
        _logger.Warning(format,args);
    }

    public void Close()
    {
        Log.CloseAndFlush();
    }
}

然后从我的启动页面调用包装器,

private readonly ILog _logger;
    private int _count = 0;
    public MainWindow()
    {
        InitializeComponent();
        var configuration = new ConfigurationBuilder()
            .AddJsonFile("SerilogConfig.json")
            .Build();
        _logger = new SerilogLogger(configuration);
        _logger.Info("Click count is {0}", _count += 1);
    }

而且我有Seri​​logConfig.json文件,

{
  "Serilog": {
    "Using": [ "Serilog.Sinks.File", "AWS.Logger.SeriLog" ],
    "MinimumLevel": "Verbose",
    "Region": "us-east-2",
    "LogGroup": "Petnet-Olympus-Serilog",
    "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId", "WithExceptionDetails", "WithAssemblyName", "WithAssemblyVersion" ],
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "path": "logs/Olympus_Serilog_.txt",
          "rollingInterval": "Day",
          "outputTemplate": "{Timestamp:o} [{Level}] ({MachineName}/{AssemblyName}-{AssemblyVersion}/{ThreadId}) {Message}{NewLine}{Exception}"
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs/Olympus_Serilog_.json",
          "rollingInterval": "Day",
          "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
        }
      },
      {
        "Name": "AWSSeriLog"
      }
    ]
  }
}

我无法在Cloudwatch中进行日志记录,也想知道必须如何保留AWS Credentials以及Logger如何读取凭据。

c# logging amazon-iam amazon-cloudwatch serilog
1个回答
0
投票

安装AWS开发工具包。

然后在VS中,转到AWS Explorer,您应该能够从那里配置凭证。

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