2013-05-28 14 views
5

Python logging formati stringhe con una sintassi non vedo altrove in pitone, comeIn una registrazione Python c'è un formattatore per troncare la stringa?

'format': '%(name)s' 

C'è un modo per troncare un messaggio di errore utilizzando il formattatore, o devo per sostituire la classe LogRecord per questo?

Questo tronca le parti del messaggio (anche se non riesco a trovare la documentazione per questa funzionalità nel normal places):

'format': '%(name).40s %(message).40s' 

Preferirei troncare l'intero formattato messaggio, se possibile (per un 80 console di colonne, dire).

risposta

10

Questo è solo il vecchio stile di formattazione delle stringhe. Penso che tu possa semplicemente usare un ".L", dove L è la lunghezza per troncare la stringa a qualsiasi lunghezza tu voglia. es .:

'format': '%(name).5s' 

troncherà la lunghezza a 5 caratteri.

E 'un po' difficile da trovare, ma in realtà non ne parla nel docs:

La precisione è un numero decimale che indica il numero di cifre da visualizzare dopo la virgola per un valore in virgola mobile formattato con 'f' e 'F', o prima e dopo il punto decimale per un valore in virgola mobile formattato con 'g' o 'G'. Per i tipi non numerici il campo indica la dimensione massima del campo - in altre parole, quanti caratteri saranno usati dal campo contenuto

+0

sì, dopo aver scritto la domanda e modificato per includere il tuo suggerimento sopra (quale funziona, per i singoli segnaposto nel messaggio). – hobs

+0

Quindi immagino che la mia domanda non abbia molto senso. Tutto quello che puoi passare al formattatore è un formattatore di stringhe vecchio stile. Non ha senso chiedere di formattare il risultato della formattazione da quella specifica del formattatore. – hobs

+1

Sembra che tu abbia un po 'più di controllo in Python 3.2+, dato che puoi scavalcare LogRecord Creation: http://plumberjack.blogspot.ca/2010/12/getting-more-control-over-logrecord.html – Gerrat

Problemi correlati