【发布时间】:2016-12-15 14:09:19
【问题描述】:
我正在尝试在 python 中创建一个守护程序服务,其中包含使用日志记录的日志到文件选项。 如果我将 pidfile 参数添加到 daemon.DaemonContext 构造函数,则 logger 不会将任何消息记录到 logger.log 文件中。但是,如果我删除该参数,一切正常。 运行没有任何错误。 谁能知道为什么 daemon.DaemonContext 中的 pidfile 参数禁用日志消息?我该如何解决?
任何帮助将不胜感激。谢谢
import signal
import daemon
import lockfile
import logging
import logging.handlers
def run():
logger = logging.getLogger("DaemonLog")
logger.setLevel(logging.INFO)
handler = logging.FileHandler('logger.log')
handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
logger.addHandler(handler)
daemon_context = daemon.DaemonContext(
working_directory='/opt/myDaemon',
umask=0o002,
pidfile=lockfile.FileLock('/var/run/myDaemon.pid'),
files_preserve=[handler.stream]
)
daemon_context.signal_map = {
signal.SIGTERM: terminate_collector,
signal.SIGHUP: terminate_collector,
signal.SIGABRT: terminate_collector
}
with daemon_context as context:
while True:
logger.info("log")
func()
time.sleep(PARAM_SLEEP)
if __name__ == "__main__":
run()
【问题讨论】:
标签: python logging daemon lockfile