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.

Consola de Serilog al ejecutarse como systemd.

Tengo una aplicación .Net core 5.0 que utiliza el sink de consola de Serilog para registrar eventos. Una parte de la aplicación inicia un punto de métricas Prometheus, esta parte no está integrada con Serilog y también imprime en la consola.

Cuando ejecuto como un contenedor Docker, tanto Serilog como el punto de acceso imprimen en la consola.

Cuando instalo como un servicio systemd en Ubuntu 20.04 LTS, solo veo los registros de Prometheus, no de Serilog.

app.service

[Unit]
Description=App1
Wants=network-online.target
After=network-online.target

[Service]
User=appuser
Group=appuser
WorkingDirectory=/usr/local/bin/app
EnvironmentFile=/usr/local/bin/app/app.env
ExecStart=dotnet /usr/local/bin/app/app.dll
Restart=always

[Install]
WantedBy=multi-user.target

Al ejecutar journalctl -f -u app solo se muestran los registros de Prometheus. ¿Hay alguna manera de configurar Serilog para que funcione con systemd?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de configurar Serilog para que funcione con systemd. Necesitas redireccionar la salida de la consola de tu aplicación .NET Core al registro del sistema de systemd, lo cual se puede hacer agregando la siguiente línea en tu archivo app.service bajo la sección [Service]:

    StandardOutput=syslog
    

    Esto redireccionará la salida de la consola al registro del sistema de systemd, que se puede acceder utilizando el comando journalctl.

    También debes asegurarte de que la consola de Serilog esté configurada para escribir en la salida estándar en tu código. Puedes hacer esto configurando Serilog para que use la consola como sigue:

    Log.Logger = new LoggerConfiguration()
        .WriteTo.Console()
        .CreateLogger();
    

    Con estos cambios de configuración, deberías poder ver tanto los registros de Prometheus como los de Serilog en el registro del sistema de systemd utilizando el comando journalctl -f -u app.

Comments are closed.