Je souhaite enregistrer une ligne décrivant les informations de journalisation pour chaque fichier journal créé par l'enregistreur. Actuellement, j'utilise un processus de journalisation séparé qui sera exécuté tout le temps. Il reçoit les informations d'une file d'attente et les écrit dans le journal. Beaucoup de modules transmettront des informations à cette file d'attente de journalisation.Effectuer une action chaque fois qu'un journal est pivoté en python
Mon code d'échantillonnage est:
import logging
import time
from logging.handlers import TimedRotatingFileHandler as rotate
def info_log(log_queue):
logger = logging.getLogger("My Log")
logger.setLevel(logging.INFO)
handler = rotate("log/info.log", when="D", interval=30, backupCount=13)
logger.addHandler(handler)
desc_string = "yyyy/mm/dd-HH:MM:SS \t name \t country \n"
logger.info(desc_string)
while True:
result=log_queue.get().split("#")
logger.info(result[0] + "\t" result[1] + "\t" + result[2] + "\n")
Chaque fois que le journal est mis en rotation, je veux desc_string
à écrire 1er au fichier journal.
Comment puis-je faire ça? Ou, en d'autres termes, comment savoir dans le programme quand un journal est pivoté?
On dirait que ça va faire l'affaire. Je l'ai essayé et il montre une erreur, 'super() prend au moins 1 argument. Aucun donné. – RatDon
Ceci est une syntaxe Python 3: si vous êtes sur Python 2, la syntaxe est 'super (CustomFileHandler, self) .doRollover()' – gbin