我有一个脚本,它将一些数据记录到磁盘上:
logging.basicConfig(filename='davis-debug.log',level=logging.DEBUG) logging.basicConfig(filename='davis-error.log',level=logging.ERROR) logging.basicConfig(filename='davis-error.log',level=logging.WARNING) logging.basicConfig(filename='davis-error.log',level=logging.CRITICAL)
当我像这样使用时,日志记录就停止了。
try:
with daemon.DaemonContext():
station = VantageProStation()
station.run()
except KeyboardInterrupt:
logging.critical('Stopping user aborted with CTRL+C')
pass
我尝试过file_preserve,但是logging.basicConfig不返回流。
另外,我不能使用files_preserve传递几个流。
我当然希望我的日志记录继续进行,我尝试将日志定义放在我的类init中,这也没有帮助。
发布于 2013-02-03 09:07:49
在守护进程中配置记录器怎么样?这对我来说很管用:
#!/usr/bin/env python
import daemon
import logging
import logging.handlers
from time import sleep
from datetime import datetime
def time_logging_daemon():
logger = logging.getLogger('time_logging_daemon')
logger.addHandler(logging.handlers.SysLogHandler(address='/dev/log'))
logger.setLevel(logging.INFO)
while True:
logger.info(datetime.now())
sleep(1)
with daemon.DaemonContext():
time_logging_daemon()
发布于 2016-12-22 13:52:19
守护进程上下文将所有文件处理程序关闭为“行为良好的守护进程”,但files_preserve
中指定的守护进程除外。你的方向是对的。
有一种方法可以从logging
获取文件处理程序,但我建议您显式地创建文件记录器。
#!/usr/bin/env python
import daemon
import logging
import logging.handlers
from time import sleep
from datetime import datetime
logging.basicConfig()
file_logger = logging.FileHandler("/tmp/aaa.log", "w")
logger = logging.getLogger()
logger.addHandler(file_logger)
logger.setLevel(logging.INFO)
with daemon.DaemonContext(files_preserve=[file_logger.stream.fileno()]):
while True:
logger.info(datetime.now())
sleep(1)
https://stackoverflow.com/questions/14674733
复制相似问题