2017-05-10 2 views

Répondre

1

Vous pouvez le faire en utilisant une classe de message personnalisé, dont la méthode __str__ fait la mise en forme réelle, comme dans l'exemple suivant (non testé):

from bottle import SimpleTemplate 
class BottleTemplateMessage(object): 
    def __init__(self, source, **kwargs): 
     self.template = SimpleTemplate(source) 
     self.context = kwargs 

    def __str__(self): 
     return self.template.render(**self.context) 

puis

import logging 
logging.warning(BottleTemplateMessage('Hello, {{name}}!', name='world')) 

qui devrait imprimer quelque chose comme

WARNING:root:Hello, world! 
+0

Y at-il un moyen d'injecter ce comportement en amont de sorte que le code de l'appelant est simplifié à '' logging.warning ('Bonjour, {{nom}}!', Name = 'monde') ''? –

+0

Non sans une approche telle que l'utilisation d'un adaptateur et la connexion (afin que les bibliothèques tierces continuent à se connecter normalement - si vous n'utilisez pas _any_ code tiers, alors je suppose que le 'Logger' pourrait être sous-classé ...) –