W jaki sposób Django może logować się przy użyciu niestandardowych atrybutów w formatyzatorze? Myślę na przykład o zalogowaniu zalogowanej nazwy użytkownika.Rejestrowanie niestandardowych atrybutów Django w formatorze
W skrypcie settings.py
, zmienna jest zdefiniowana REJESTRACJI:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
},
},
'formatters' : {
'info_format' : {
'format' : '%(asctime)s %(levelname)s - %(message)s',
},
}
}
Chciałbym użyć formatu, coś jak:
'format' : '%(asctime).19s %(levelname)s - %(username)s: %(message)s'
Jeżeli nazwa użytkownika będzie aktualnie zalogowanego użytkownika. Możliwe, że mogą tu zostać dodane inne zmienne sesji.
Rozwiązaniem jest tu użyć parametru extra
na temat metod rejestratora, który odbiera słownika za pomocą klawiszy jak struny chcę użyć na ciąg formatu:
logger.info(message, extra={'username' : request.user.username})
Innym (brzydki) obejście gdyby tworzyły należy zbudować atrybut wiadomości, aby uwzględnić rzeczy, które nie są częścią domyślnych atrybutów, które mają formaty logowania.
message = request.user.username + " - " + message
logger.info(message)
Ale czy istnieje sposób na ustawienie ciągu formatu z określonymi atrybutami i sprawienie, aby Django automatycznie przekazywał je do interfejsu API rejestrowania? Jeśli na przykład% (nazwa użytkownika), request.user.username, z innych być może ...
Proszę podać kod tego, co zostało zrobione. –
@JohnPeters there you go! –