我有许多 .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
...
为什么会发生这种情况以及如何解决它?