2017-07-28 3 views
1

J'ai un script qui s'exécute tous les jours et utilise TimedRoatingLogFileHandler de Python. Voici un extrait du code.Survoler pour TimedRotatingFileHandler en python ne se produit pas

log = 'test.log'   # Set up Log title 
filename = '/var/log/' + log 
handler = TimedRotatingFileHandler(filename, when="D", interval=1, backupCount=45) 
formatter = logging.Formatter('%(asctime)s : %(name)s : %(levelname)s : %(message)s', 
           datefmt='%a, %d-%b-%Y %H:%M:%S') 
handler.setFormatter(formatter) 
logger = logging.getLogger(__name__) 
logger.setLevel(logging.INFO) 
logger.addHandler(handler) 

logger.info("Script execution started") 

J'attends une nouvelle test.log logfile est créé par jour et le journal précédent sera déplacé à test.log.1 et test.log.2 etc.

est mon hypothèse correcte? Si oui, pourquoi cela ne se produit-il pas? Je peux voir la sortie d'hier dans le journal d'aujourd'hui encore. Le fichier journal d'hier n'est pas déplacé dans un fichier différent comme je m'y attendais. J'utilise Python 2.7 sur une machine Linux SUSE. J'ai vérifié les autres threads mais la plupart d'entre eux ne contiennent aucune réponse. S'il vous plaît laissez-moi savoir si vous avez besoin de plus de détails.

+0

J'ai mis à jour ma réponse. –

+0

Cette installation fonctionne. C'est de ma faute. Il y a beaucoup de fichiers dans le dossier et je faisais "ls -lrt test * log" au lieu de "ls -lrt test.log *". –

Répondre

0

Vous devez enregistrer quelque chose pour que le rollover se produise. Jusqu'à ce que votre programme le fasse, la sortie d'hier pourrait toujours figurer dans le journal en cours.

Mise à jour:TimedRotatingFileHandler est pour lorsque le script s'exécute sur plusieurs jours, tout en se connectant sur plusieurs jours. Si le script se termine tous les jours avant la fin de la journée, il est préférable d'utiliser un FileHandler avec un nom de fichier dérivé de la date.

+0

Veuillez voir la dernière ligne. J'ai inclus une déclaration "logger.info" à la fin. Et comme je l'ai dit, ce n'est qu'un extrait. Il y en a beaucoup plus dans le script et donc beaucoup plus d'instructions logger.info ou logger.error. –