Ho un'applicazione che fa uso di multi-threading e viene eseguita in background su un server. Per monitorare l'applicazione senza dover accedere al server, ho deciso di includere Bottle per rispondere ad alcuni endpoint HTTP e lo stato dei report, eseguire shutdown remoto, ecc.Registro rotante di Python a una variabile
Volevo anche aggiungere un modo consultare il file di log. Potrei accedere utilizzando lo FileHandler
e inviare il file di destinazione quando viene richiesto l'URL (ad esempio /log
).
Tuttavia, mi chiedevo se sarebbe stato possibile implementare qualcosa come un RotatingFileHandler
, ma invece di accedere a un file, accedere a una variabile (ad esempio BytesIO
). In questo modo, potrei limitare il registro alle informazioni più recenti e allo stesso tempo poterlo restituire al browser come testo anziché come download di file separato.
Il RotatingFileHandler
richiede un nome file, quindi non è un'opzione per passare un flusso BytesIO
. La registrazione a una variabile stessa è perfettamente fattibile (ad esempio Capturing Python Log Output In A Variable), ma sono un po 'perplesso su come eseguire la parte a rotazione.
Qualsiasi pensiero, suggerimento, suggerimento sarebbe molto apprezzato.
Hai bisogno di un oggetto 'collections.deque' per catturare l'output di registro? Si imposta una lunghezza massima per la deque e, una volta raggiunta questa lunghezza, gli elementi del registro vecchi vengono disattivati all'avvio quando si aggiungono nuovi elementi del registro. –