In un'applicazione Flask, voglio aggiungere un campo user_id
aggiunto a ogni record del log degli errori che viene prodotto, ogni volta che esiste uno user_id
nello flask.session
.Registrazione Python: come aggiungere un campo personalizzato a LogRecord e registrare un callback globale per impostarne il valore
mi si avvicinò con la soluzione qui di seguito, ma è hacker, dal momento che non consente la stringa di formato per guidare la formattazione del user_id
, e dal momento che l'API di registrazione sembra fornisce modi per personalizzare la registrazione (LoggerAdapter
, logging.makeRecord
, ecc ...) Immagino che ci debba essere un modo più pulito.
Quale sarebbe il "modo Python" per farlo?
class CustomFormatter(Formatter):
def format(self, record):
from myapp.core import authenticationManager
user_id = authenticationManager.current_user_id_if_authenticated()
user_id = "unknown" if user_id is None else str(user_id)
return super(F,self).format(record) + ", user_id" + user_id
Grazie, funziona benissimo, ma dovrebbe essere restituito 1 invece di Vero, come la documentazione prescrivono: https: // docs .python.org/2/library/logging.html # filter-objects? –
Qualsiasi oggetto che valuti su True in un contesto booleano farà. [Lo stato dei documenti] (https://docs.python.org/2/library/logging.html#logging.Logger.filter), "Applica i filtri di questo logger al record e restituisce un valore true se il record deve essere trasformati". Preferisco 'True' su' 1' qui perché enfatizza che stiamo usando la "boolean-ness" dell'oggetto. – unutbu