Mon script se connecte à un fichier sans problème jusqu'à ce que j'essaie de le faire passer en arrière-plan, point auquel le gestionnaire de fichiers est fermé, même si j'utilise filesPreserve. Comment puis-je améliorer cela de façon légère afin que mon enregistreur fonctionne en arrière-plan?Le démon de journalisation Python détruit le gestionnaire de fichiers
#!/usr/bin/env python
from socket import *
import sys, time, logging
import daemon
context = daemon.DaemonContext()
logger = logging.getLogger('audit')
hdlr = logging.FileHandler('/mnt/audit.log')
formatter = logging.Formatter('%(asctime)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.WARNING)
context.filesPreserve = [hdlr]
with context:
HOST = ''
PORT = 50007
ADDR = (HOST,PORT)
BUFSIZE = 4096 #reasonably sized buffer for data
serv = socket(AF_INET,SOCK_STREAM)
serv.bind((ADDR))
serv.listen(5) #5 is the maximum number of queued connections we'll allow
while True:
conn, addr = serv.accept()
sys.stdout.write('accepted connection')
while True:
data = conn.recv(1024)
if not data:
break
else:
logger.error ("-" * 20)
logger.error(data)
if "DONE" == data:
break
conn.close()
Je n'ai pas un système de type Unix pour tester ceci, donc je ne peux pas beaucoup d'aide. Au début, j'étais un peu confus car cette question semble être le seul hit Google pertinent pour «Python filesPreserve» (si vous persuadez Google de ne pas le répéter). C'est une propriété d'un objet 'DaemonContext' du module' daemon' de Python, documenté dans [PEP 3143] (http://www.python.org/dev/peps/pep-3143/). – Blckknght