繁体   English   中英

如何使用 json 配置 Serilog 日志记录到 Cloudwatch

[英]How to Configure Serilog Logging to Cloudwatch using json

我想通过 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);
    }

我有 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 凭证以及记录器如何读取凭证。

安装 AWS 开发工具包。

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

使用有效凭据在特定位置创建一个 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" } } ] } }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM