C# と Serilog を使用した Elastic Search のカスタム プロパティ
10169 ワード
こんにちは!
今日は、c# と Serilog を使用して Elasticsearch のカスタム プロパティを作成する方法を紹介します.
ログをelasticsearchに送信するためのserilog構成があります
次に、startup.cs で構成を読み込む必要があります.
ここで、ロガー メソッドを呼び出す必要があります
このメソッドがelasticsearchにログを登録する場合、elastic searchはこれらのプロパティを「フィールド」に添付します
これで、de KQL を使用してログを検索できます
今日は、c# と Serilog を使用して Elasticsearch のカスタム プロパティを作成する方法を紹介します.
ログをelasticsearchに送信するためのserilog構成があります
public class SerilogConfiguration{
public static void GetFileAndElasticSearchLogger(IConfigurationRoot configuration = null)
{
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
configuration ??= new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile(
$"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json",
optional: true)
.AddEnvironmentVariables()
.Build();
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.Debug()
.WriteTo.Console(
outputTemplate: "Level:{Level:u4} Tenant:{TenantId} Time:{Timestamp:HH:mm:ss} Message:{Message:lj}{NewLine}{Exception}"
)
.WriteTo.Elasticsearch(ConfigureElasticSink(configuration["App:Id"], configuration, environment))
.Enrich.WithProperty("Environment", environment)
.ReadFrom.Configuration(configuration)
.CreateLogger();
}
private static ElasticsearchSinkOptions ConfigureElasticSink(string applicationName, IConfigurationRoot configuration, string environment)
{
var env = environment?.ToLower().Replace(".", "-");
if (configuration["ElasticSearch:Password"] != null)
{
return new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Uri"]))
{
ModifyConnectionSettings = x => x.BasicAuthentication(
configuration["ElasticSearch:User"],
configuration["ElasticSearch:Password"]
) ,
AutoRegisterTemplate = true,
IndexFormat = $"DEV-TO-EXAMPLE-{applicationName}{(env != null? "-"+env : "")}"
};
}
return new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Uri"]))
{
AutoRegisterTemplate = true,
IndexFormat = $"DEV-TO-EXAMPLE-{applicationName}{(env != null? "-"+env : "")}"
};
}
}
次に、startup.cs で構成を読み込む必要があります.
public static int Main(string[] args){ {
SerilogConfiguration.GetFileAndElasticSearchLogger();
...
}
ここで、ロガー メソッドを呼び出す必要があります
var Logger = Serilog.Log.Logger;
Logger
.ForContext("LogName", "Dev.To Example")
.ForContext(ExecutionTime, 1500)
.Information("Created Log....")
このメソッドがelasticsearchにログを登録する場合、elastic searchはこれらのプロパティを「フィールド」に添付します
これで、de KQL を使用してログを検索できます
fields.LogName: "%.TO%"
//or
fields.ExecutionTime > 1500
Reference
この問題について(C# と Serilog を使用した Elastic Search のカスタム プロパティ), 我々は、より多くの情報をここで見つけました https://dev.to/rafaelgfirmino/custom-properties-kibana-in-c-serilog-32ldテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol