Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Comment trier les logs de ses différentes applis ?

+1 vote

J'aime bien ranger les logs de mes différentes applis dans un fichier de log, ce qui permet de trier si pas hasard il y a une erreur.

Est-ce qu'il y a un moyen pour que j'ai les logs des applications de monprojet/{a, b, c} dans un répertoire monprojet/log/a.log (b.log, c.log). Actuellement j'ai tout dans un seul fichier de log et/ou dans ceux d'apache, mais je ne trouve pas cela pratique, surtout avec plusieurs projets en parallèle ...

Par exemple pour les forms dans une appli j'ai :

import logging
#log = logging.getLogger(__name__)
#log = logging.basicConfig(filename=settings.PROJECT_PATH+'/log/forms.log')
logging.basicConfig(filename=settings.PROJECT_PATH+'/log/forms.log',level=logging.DEBUG)

Je voudrais pouvoir spécifier les messages dont j'ai besoin dans des fichiers dédiés quand je fais :

logging.debug("Je recois le mot cle %s" % keyw )

Peut-être n'est-ce pas la bonne solution ?

Merci d'avance,

demandé 31-Aou-2016 par Dr_ST

1 Réponse

+2 votes

J'ai proposé ma solution pour le logging dans cette réponse, qui permet notamment de spécifier, dans chaque fichier, le nom du sous-logger.

Fichier a:

import logger
LOGGER = logger.get('a')

Fichier b:

import logger
LOGGER = logger.get('b')

Et, automatiquement, le wrapper suivant (placé dans le module logger) s'occupera de retourner le sous-logger en 'nomdulogger.sousnom':

def get(sublogger=None, name='nomdulogger'):
    if sublogger:
        return logging.getLogger(name + '.' + sublogger)
    else:
        return logging.getLogger(name)

La gestion des sous-logger est simple : ils héritent des propriétés du logger de niveau supérieur. ('nomdulogger' ici)
Pour avoir un fichier par sous-logger, il faut le spécifier dans la config.
Voir le cookbook du module logging ou le tuto sam et max

répondu 31-Aou-2016 par lucas (2,340 points)
edité 1-Sep-2016 par lucas
...