systemd dotnet 服务的 syslog 标签在 SyslogIdentifier 和进程名称之间不断变化

systemd dotnet 服务的 syslog 标签在 SyslogIdentifier 和进程名称之间不断变化

我有许多 .NET Core 应用程序在 Ubuntu 18.04 (systemd 237) 上作为 systemd 服务运行。单元文件如下所示:

[Unit]
Description=my-service dotnet service

[Service]
Type=simple
SyslogIdentifier=my-service
User=myservice
EnvironmentFile=/etc/environment
WorkingDirectory=/home/myservice
ExecStart=/usr/bin/dotnet /home/myservice/My.Service.dll
Restart=on-failure
RestartSec=5
StartLimitBurst=10
StartLimitInterval=60

[Install]
WantedBy=default.target

对于大多数人来说,我在 /var/log/syslog 中看到的 syslog 标签是上面设置的 SyslogIdentifier,正如预期的那样。但是,对于一项服务,我仍然看到带有“dotnet”作为 syslog 标记的消息,尽管如预期的那样$ systemctl show my-service |grep SyslogIdentifier显示了SyslogIdentifier=my-service

当我检查journalctl时,它似乎不断在“my-service”和可执行文件名称(“dotnet”)之间交替:

$ journalctl -u my-service -o verbose |grep SYSLOG_IDENTIFIER
    SYSLOG_IDENTIFIER=dotnet
    SYSLOG_IDENTIFIER=my-service
    SYSLOG_IDENTIFIER=my-service
    SYSLOG_IDENTIFIER=dotnet
    SYSLOG_IDENTIFIER=my-service
    SYSLOG_IDENTIFIER=my-service
    SYSLOG_IDENTIFIER=dotnet
    SYSLOG_IDENTIFIER=my-service
    SYSLOG_IDENTIFIER=my-service
    ...

为什么会发生这种情况以及如何解决它?

相关内容