我將 python 腳本作為 systemd 服務運行,它在以下.service文件中定義:[Unit]Description=MyServiceAfter=multi-user.target[Service]Type=idleExecStart=/usr/bin/python3 /home/username/projects/website_notifier/run_service.py[Install]After=multi-user.target在我的 run_service.py 文件中,我然后使用日志記錄模塊記錄輸出:import logginglogging.basicConfig(filename=settings['log_file_name'], level=logging.INFO)logging.info("Starting notifier service at " + str(datetime.utcnow()))問題是當我運行我啟動我的文件時,這些信息沒有被記錄到我的日志文件中 systemctl現(xiàn)在,我知道通常 systemd 會輸出到 journalctl,我不想要這個。我希望能夠通過另一個不以管理員權限運行的腳本訪問此日志。我怎樣才能做到這一點?
3 回答

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
從那以后,我改用Loguru進行日志記錄,它似乎更加直觀和實用。
此外,將以下內容添加到.service文件可確保日志記錄沒有緩沖并且是實時的:
[Service]
Environment=PYTHONUNBUFFERED=1

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
首先檢查您的服務是否正在運行:systemctl status MyService
應該向您顯示錯誤。
After
進入[Unit]
部分,而不是[Install]
。
一旦我確定你的腳本對我有用。其他檢查事項:
日志文件路徑是絕對路徑嗎?
啟動服務的用戶是否有權在那里寫入?
我建議只記錄到標準輸出和日志,這樣您就不必擔心輪換日志文件、需要多少空間等journalctl
。查詢日志也非常好。您應該能夠以非 root 用戶身份訪問日志,或者作為與腳本相同的用戶,或者通過在 group 中systemd-journal
。
添加回答
舉報
0/150
提交
取消