0
votes

Comment remplacer la chaîne dans le paramètre de journalisation?

Je configure une interface utilisateur et je souhaite permettre à l'utilisateur de spécifier quel type de journalisation est requis. Pour cela, je veux utiliser quelque chose comme ceci: xxx

où le réglage d'informations peut être spécifié.

Pour la journalisation Il y a les options suivantes: Débogage, Info, Avertissement, Erreur, critique et je vais l'avoir stocké dans une chaîne. Comment puis-je substituer la chaîne de manière appropriée dans le code ci-dessus?


1 commentaires

Vous pouvez utiliser if / elif / elif / elif / code> ou vous pouvez créer un dictionnaire {"info": journalisation.info, ...}


4 Réponses :


0
votes

journalisation.Level est une valeur entière, comme on le voit Dans le manuel .

Vous pouvez stocker cette valeur dans votre configuration (je suppose que vous utilisez ConfigParser ou JSON ou quelque chose de similaire?) Et tout le charger sur l'application commence. Sur la manière de relier le texte de la valeur, ce qui dépend de la boîte à outils de l'interface utilisateur, probablement plus simple serait une combinaison de valeurs basée sur une touche dict.

Exemple de configuration de la journalisation avec configuration Parser < Pré> xxx


0 commentaires

0
votes

Vous pouvez utiliser le dictionnaire pour le convertir xxx


0 commentaires

1
votes

Vous avez quelques options.

Le meilleur est probablement un dict: p> xxx pré>

un autre utilise des conditionnels: P>

if logtype == "INFO":
    logparam = logging.INFO
elif logtype == "DEBUG":
    logparam = logging.DEBUG
else:
    ...


5 commentaires

J'aime l'option getattr (journalisation, logType) car il s'agit d'une doublure - quel est le problème avec cela? Unpythonic?


@Michael je veux dire, ce n'est pas vraiment trop mauvais. Peut-être que les gens ne me détestent pas pour cela lol. Je pense que cela peut être raisonnablement idiomatique. Le seul problème est que si la chaîne n'est pas un niveau de journalisation valide, si c'est quelque chose comme __ dir __ , qui retournera toujours une valeur.


Un bon sur est ici: Stackoverflow.com/questions/4075190/... Mais je ne comprends toujours pas quel est le problème de ce problème.


@Michael ouais, je monte ma réponse. Cela semble en fait être parfaitement valide.


À condition que vous utilisiez une valeur par défaut (comme le troisième paramètre) que vous connaissez est valide, il me semble assez sûr ...



0
votes

malgré le nom, logging.getlevelName convertit réellement les deux manières: xxx


0 commentaires