J'ai un formatter personnalisé dans mon python applications Flask, que je l'ai ajouté à l'enregistreur racine:formatter personnalisée en Python ne peut pas gérer au format des messages du journal
logger = logging.getLogger()
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = CustomLoggingFormatter()
handler.setFormatter(formatter)
logger.addHandler(handler)
Cela fonctionne parfaitement bien quand je veux log quelque chose (logger.info() ...), mais j'ai un problème avec les journaux des bibliothèques, par exemple uwsgi.
Voici un exemple d'un journal message:
{ "@timestamp": "2017-09-25T06: 57: 45.373Z", "niveau": "INFO", "message" : "* Exécution% s: //% s:% d /% s"}
Je pensais que peut-être quelque chose ne va pas avec mon formatter, mais quand je me connecte l'LogRecord que mes CustomLoggingFormatter receivs, il semble comme ceci pour la ligne ci-dessus:
LogRecord: werkzeug, 20, < ...>/lib/python3.5/site-packages/werkzeug/_internal.py, 87, "* Exécution sur% s: //% s:% d /% s"
Voici mon CustomLoggingFormatter:
class CustomLoggingFormatter(Formatter):
data = {}
def __init__(self):
super(CustomLoggingFormatter, self).__init__()
def format(self, record):
print(record)
input_data = {}
input_data['@timestamp'] = datetime.utcnow().isoformat()[:-3] + 'Z'
input_data['level'] = record.levelname
if record.msg:
input_data['message'] = record.msg
input_data.update(self.data)
return json.dumps(input_data)
pour ma formatter au travail, il semble que la mise en forme de chaîne doit d'abord être résolu, mais pour plusieurs bibliothèques qui ne se produit pas. Quelqu'un qui sait comment résoudre ce problème?
S'il vous plaît montrer votre code personnalisé. 'Formatter.format()' doit toujours gérer une instance 'LogRecord'; l'implémentation par défaut appelle 'Formatter.formatMessage()' pour gérer le formatage réel (qui utilise généralement 'vars (record)' comme dictionnaire). –
Ajouté mon CustomLoggingFormatter :) – user16655
Depuis que l'implémentation de formatage a changé un peu entre les versions de Python, quelle version de Python utilisez-vous? –