elasticsearch中使用Serilog如何每天自动生成Index
How to generate Index automatically per day using Serilog in elastic search
我正在使用带有 dotnet 框架 4.8 的 serilog 2.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。但不知道如何实现这一目标。
你试过了吗?
> "log-{0:yyyy.MM.dd}"
我正在使用带有 dotnet 框架 4.8 的 serilog 2.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。但不知道如何实现这一目标。
你试过了吗?
> "log-{0:yyyy.MM.dd}"