简体   繁体   中英

Log Python Systemd output to log file

I run my python script as a systemd service, it is defined in the following .service file:

[Unit]
Description=MyService
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python3 /home/username/projects/website_notifier/run_service.py

[Install]
After=multi-user.target

In my run_service.py file I then log output using the logging module:

import logging

logging.basicConfig(filename=settings['log_file_name'], level=logging.INFO)
logging.info("Starting notifier service at " + str(datetime.utcnow()))

The issue is that this information is not being logged to my log file when I run I start my file through systemctl

Now, I know that generally systemd gets output to journalctl, I don't want this. I want to be able to access this log through another script that does not run with administrator priviliges.

How can I make this happen?

I've since switched to using Loguru for logging and it seems far more intuitive and useable.

Also, adding the following to .service file makes sure the logging is not buffered and is real time:

[Service]
Environment=PYTHONUNBUFFERED=1

First check that your service is running at all: systemctl status MyService should show you an errors.

After goes in [Unit] section, not in [Install] .

Once I fixed that your script worked for me. Other things to check:

  • Is the log file path an absolute path?
  • Does the user starting the service have permissions to write there?

I would recommend just logging to stdout, to the journal, so that you don't have to worry about rotating the log file, how much space it takes, etc. Also journalctl is really nice for querying logs. You should be able to access the journal as non-root, either as same user as the script, or by being in group systemd-journal .

答案很简单, logging.info不会出现,但logging.warn (和 up)会出现。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM