2017-09-25 7 views
0

J'utilise le code suivant pour limiter la taille d'un fichier journal (exemple minimal):enregistreur Python 3 avec RotatingFileHandler excedes maxBytes limite

import logging 
from logging.handlers import RotatingFileHandler 

# Set up logfile and message logging. 
logger = logging.getLogger("Logger") 
logger.setLevel(logging.ERROR) 
# Create the rotating file handler. Limit the size to 1000000Bytes ~ 1MB . 
handler = RotatingFileHandler("test.log", mode='a', maxBytes=1000000, encoding=None, delay=0) 
handler.setLevel(logging.ERROR) 
# Create a formatter. 
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 
# Add handler and formatter. 
handler.setFormatter(formatter) 
logger.addHandler(handler) 

for l in range(1000): 
    logger.error("test" * 1000) 

Cependant la taille du fichier excedes la limite de 1 Mo et continue l'exploitation forestière. Je ne vois pas ce que je fais de mal. Est-il possible de choisir différents paramètres pour limiter correctement la taille de mon fichier journal?

Répondre

0

Ok il semble que je trouve une solution qui résout mon problème:

import logging 
from logging.handlers import RotatingFileHandler 

# Set up logfile and message logging. 
logger = logging.getLogger("Logger") 
logger.setLevel(logging.ERROR) 
# Create the rotating file handler. Limit the size to 1000000Bytes ~ 1MB . 
handler = RotatingFileHandler("test.log", mode='a', maxBytes=1000000, backupCount=1, encoding='utf-8', delay=0) 
handler.setLevel(logging.ERROR) 
# Create a formatter. 
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 
# Add handler and formatter. 
handler.setFormatter(formatter) 
logger.addHandler(handler) 

for l in range(1000): 
    logger.error("test" * 1000) 

J'ai simplement raté le paramètre backupCount = 1. Cela crée cependant deux fichiers test.log et test.log.1 (2 fichiers semblent être nécessaires pour les rotations de fichiers correctes). Pas la solution parfaite puisque je voudrais avoir seulement un fichier mais ça marche bien pour moi.