serilog-sinks-elasticsearch
serilog-sinks-elasticsearch copied to clipboard
Serilog Elastic Search cloud logging issue - illegal_argument_exception Reason
I tested two registration and both do not work
*User is ok. when I used this configuration to not ElasticSearch Cloud in Azure this configuration worked correctly
Packages:
Serilog 2.10.0
Serilog.AspNetCore 3.4.0
Serilog.Sinks.Elasticsearch 8.4.1
Serilog.Sinks.File 4.1.0
var logger2 = new LoggerConfiguration()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("https://test.es.westus2.azure.elastic-cloud.com:9243"))
{
IndexFormat = "logs-test-{0:yyyy.MM.dd}",
AutoRegisterTemplate = true,
ModifyConnectionSettings = x => x.BasicAuthentication("elastic", "password")
}).CreateLogger();
logger2.Error("test");
------------------
createLoggerPolicy.Execute(
() => Log.Logger = new LoggerConfiguration()
.Enrich.WithProperty("Environment", configuration.Environment)
.Enrich.WithProperty("Application", configuration.ApplicationName)
.MinimumLevel.Debug()
.MinimumLevel.Override("Quartz", LogEventLevel.Information)
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("Hangfire", LogEventLevel.Warning)
.MinimumLevel.Override("MassTransit", LogEventLevel.Debug)
.WriteTo.File(configuration.LogsPath, rollingInterval: RollingInterval.Day)
.ConditionalConfiguration(configuration.ElasticSearch.SinkEnabled, x =>
x.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(configuration.ElasticSearch.Url)
{
ConnectionTimeout = TimeSpan.FromSeconds(configuration.ElasticSearch.ConnectionTimeout),
IndexFormat = "logs-test-{0:yyyy.MM.dd}",
AutoRegisterTemplate = true,
AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7,
DetectElasticsearchVersion = true,
CustomFormatter = new ExceptionAsObjectJsonFormatter(renderMessage: true),
ModifyConnectionSettings = connectionConfiguration =>
connectionConfiguration.BasicAuthentication(
configuration.ElasticSearch.Username,
configuration.ElasticSearch.Password),
EmitEventFailure =
EmitEventFailureHandling.WriteToSelfLog |
EmitEventFailureHandling.RaiseCallback |
EmitEventFailureHandling.ThrowException,
FailureCallback = e => { Console.WriteLine("Unable to submit event " + e.MessageTemplate); },
BatchAction = ElasticOpType.Create
}))
.CreateLogger());
Serilog.Debugging.SelfLog.Enable(message => Console.WriteLine(message));
fixed -> added this ->
x.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(configuration.ElasticSearch.Url)
{
TypeName = null,
2022-08-31T07:09:36.4317086Z Caught exception while preforming bulk operation to Elasticsearch: Elasticsearch.Net.ElasticsearchClientException: Request failed to execute. Call: Status code 400 from: POST /_bulk. ServerError: Type: illegal_argument_exception Reason: "Action/metadata line [1] contains an unknown parameter [_type]"
at Elasticsearch.Net.Transport1.HandleElasticsearchClientException(RequestData data, Exception clientException, IElasticsearchResponse response) at Elasticsearch.Net.Transport1.FinalizeResponse[TResponse](RequestData requestData, IRequestPipeline pipeline, List1 seenExceptions, TResponse response) at Elasticsearch.Net.Transport1.RequestAsync[TResponse](HttpMethod method, String path, CancellationToken cancellationToken, PostData data, IRequestParameters requestParameters)
at Serilog.Sinks.Elasticsearch.ElasticsearchSink.EmitBatchAsync(IEnumerable`1 events)