【问题标题】:How to Configure Serilog Logging to Cloudwatch using json如何使用 json 将 Serilog 日志配置到 Cloudwatch
【发布时间】:2020-01-10 05:37:00
【问题描述】:

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

下面是我的 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);
    }

我有 SerilogConfig.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 凭证以及 Logger 如何读取凭证。

【问题讨论】:

标签: c# logging amazon-iam amazon-cloudwatch serilog


【解决方案1】:

安装 AWS 开发工具包。

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

【讨论】:

    【解决方案2】:

    使用有效凭据在特定位置创建 aws 凭据文件,并在 app.config 中指定相同的文件,

    <appSettings>
    <!-- AWS -->
    <add key="AWSProfilesLocation" value="D:\awscredentials" />
    </appSettings>
    

    我的 SerilogConfig.json 如下所示,

    {
      "Serilog": {
        "Using": [ "Serilog.Sinks.File", "AWS.Logger.SeriLog" ],
        "MinimumLevel": "Verbose",
        "Enrich": [ "WithMachineName", "FromLogContext", "WithExceptionDetails", "WithAssemblyInformationalVersion" ],
        "Properties": {
          "Application": "App"
        },
        "Region": "us-east-1",
        "Profile": "serilog",
        "LogGroup": "CloudGroup-Client",
        "LibraryLogFileName": "serilog-aws-errors.txt",
        "LogLevel": {
          "Default": "Information",
          "System": "Information",
          "Microsoft": "Information"
        },
        "WriteTo": [
          {
            "Name": "AWSSeriLog",
            "Args": {
              "textFormatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
            }
          }
        ]
      }
    }

    【讨论】:

      猜你喜欢
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 2022-08-18
      • 2020-02-27
      相关资源
      最近更新 更多