es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Iniciando sesión en ElasticSearch con Serilog en ASP.NET Web API

Estoy tratando de iniciar sesión en Elasticsearch en uno de mis proyectos de ASP.NET Web API utilizando Serilog, pero desafortunadamente no puedo encontrar los registros en Kibana.

“`c#
public class Logger
{
private readonly ILogger _localLogger;

public Logger()
{
    ElasticsearchSinkOptions options = new ElasticsearchSinkOptions(new Uri("xxx"))
    {
        IndexFormat = "log-myservice-dev",
        AutoRegisterTemplate = true,
        ModifyConnectionSettings = (c) => c.BasicAuthentication("yyy", "zzz"),
        NumberOfShards = 2,
        NumberOfReplicas = 0
    };

    _localLogger = new LoggerConfiguration()
                        .MinimumLevel.Information()
                        .WriteTo.File(HttpContext.Current.Server.MapPath("~/logs/log-.txt"), rollingInterval: RollingInterval.Day)
                        .WriteTo.Elasticsearch(options)
                        .CreateLogger();
}

public void LogError(string error)
{
    _localLogger.Error(error);
}

public void LogInformation(string information)
{
    _localLogger.Information(information);
}

}
“`

Puedo ver los registros en el archivo especificado anteriormente, simplemente no en Elasticsearch. Entonces, me pregunto si hay alguna forma de depurar por qué falló el inicio de sesión en Elasticsearch. También estoy abierto a usar otro marco de registro para iniciar sesión en Elasticsearch.

*Las credenciales y la URL para Elasticsearch son válidas, ya que he implementado esto en mi otro proyecto de AWS Lambda (.net core).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para depurar por qué los registros no se están escribiendo en Elasticsearch, puedes intentar habilitar la función de autoregistro de Serilog. Agrega la siguiente línea de código antes de crear la instancia del registrador:

    c#
    Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));

    Esto enviará mensajes de diagnóstico a la ventana de salida de depuración en Visual Studio. Esto puede ayudar a identificar cualquier error que esté ocurriendo al escribir en Elasticsearch.

    Si esto no ayuda, puedes intentar usar otro marco de registro para registrar en Elasticsearch. Algunas opciones populares incluyen NLog y log4net. Estos marcos tienen opciones de destino similares para escribir en Elasticsearch y pueden funcionar mejor para tu caso de uso.

    Otra cosa a verificar es la compatibilidad de versiones entre Serilog, Elasticsearch y el paquete de destino de Elasticsearch. Asegúrate de estar utilizando versiones compatibles para garantizar una integración y funcionalidad adecuadas.

    Finalmente, también puedes intentar habilitar el registro en el lado de Elasticsearch para ver si las solicitudes están siendo recibidas por Elasticsearch. Esto se puede hacer configurando el nivel de registro en “DEBUG” en el archivo logging.yml de Elasticsearch. Esto puede proporcionar información sobre cualquier problema con la configuración de Elasticsearch que esté evitando que los registros sean indexados.

Comments are closed.