首页 > 解决方案 > 如何在弹性搜索中使用 Serilog 每天自动生成索引

问题描述

我将 serilog 2.8 与 dotnet 框架 4.8 一起使用。相同的日志系统使用以下代码连接到 elasticsearch。

    var isxyz = Matching.FromSource("xyz");
    var elasticUrl = ConfigurationManager.GetSetting("elasticurl", "http://localhost:9200"); 
    var environment= ConfigurationManager.GetSetting("environment", "test").ToLowerInvariant();
    string servicename = "john.processExecutor";
    var indexname = $"{servicename.ToLowerInvariant()}.{environment}.{DateTime.Now.ToString("yyyyMMdd")}";
    Log.Logger = new LoggerConfiguration()

    .Enrich.WithProperty("ServiceName", servicename)
    .Enrich.FromLogContext()
    .MinimumLevel.Debug()

    .WriteTo.Logger(l => l.WriteTo.Console())

       .WriteTo.Logger(l => l.Filter.ByIncludingOnly(m => isxyz(m))
        .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(elasticUrl))
        {
            AutoRegisterTemplate = true,
            AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7,
             IndexFormat = indexname
        })
        .WriteTo.File(AppDomain.CurrentDomain.BaseDirectory + "Logs" + "\\" + "Application-.txt", rollingInterval: RollingInterval.Day,
        outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}")
     )

    .WriteTo.Logger(l => l.Filter.ByIncludingOnly(m => isxyz(m)).WriteTo
    .File(AppDomain.CurrentDomain.BaseDirectory + "Logs" + "\\" + "log-.txt", rollingInterval: RollingInterval.Day,
    outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] [{SourceContext}] [{FilePath}]  [{MemberName}] [{LineNumber}] [{ServiceName}] [{CountryCode}] [{Message:lj}{NewLine}{Exception}]"))

    .WriteTo.Logger(l => l.WriteTo
    .File(AppDomain.CurrentDomain.BaseDirectory + "Logs" + "\\" + "fulllog-.txt", rollingInterval: RollingInterval.Day,
     outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] [{SourceContext}] [{FilePath}] [{MemberName}] [{LineNumber}] [{ServiceName}] [{CountryCode}] [{Message:lj}{NewLine}{Exception}]"))

    .CreateLogger();

我想每天自动生成一个索引。我尝试使用 indexdecider。但没有得到如何实现这一目标。

标签: c#serilog

解决方案


你有没有尝试过?

> "log-{0:yyyy.MM.dd}"

推荐阅读