2013-12-18 16 views
8

Sto usando NLog per la registrazione. Attualmente il mio layout-string è:NLog: Formato loglevel con Whitespace

"${date:format=dd.MM.yyyy HH\\:mm\\:ss,fff} | ${level:uppercase=true} | ${message}" 

Ciò si traduce nei seguenti registri:

18.12.2013 11:23:14,834 | INFO | this is an info 
18.12.2013 11:23:14,835 | TRACE | this is a trace 

Quello che voglio ora è quello di formattare la "$ livello di" fare il pieno di Spazi bianchi in modo che sembra come un tavolo con 5 personaggi.

Mi piacerebbe avere:

18.12.2013 11:23:14,834 | INFO | this is an info 
18.12.2013 11:23:14,835 | TRACE | this is a trace 

non ho trovato nulla, purtroppo ... Chiunque può aiutare?

Grazie mille!

risposta

12

Provare a usare PaddingLayoutRendererWrapper. Io non sono sicuro dove un buon esempio di configurazione è, ma la fonte nel repository dei sorgenti di NLog si trova qui, così forse è possibile decodificare la configurazione corretta:

https://github.com/NLog/NLog/blob/master/src/NLog/LayoutRenderers/Wrappers/PaddingLayoutRendererWrapper.cs

Penso che si dovrebbe fare qualcosa di simile :

"${date:format=dd.MM.yyyy HH\\:mm\\:ss,fff} | ${padding:padding=5,fixedlength=true:${level:uppercase=true}} | ${message}" 

si spera, che l'esempio sarà pad tutti i valori di livello di log con 5 spazi a sinistra e poi rifinire ad una lunghezza assoluta di 5.

padding=5 significa aggiungere 5 padcharacters (DEF ault è ' ') a sinistra (negativo significa pad a destra)

fixedlength=true è un valore booleano che indica che il risultato di riempimento deve essere tagliato a una lunghezza massima di "riempimento" (ad es. 5 nel mio esempio)

+13

Grazie! L'imbottitura era la parola che stavo cercando :-) Con i tuoi suggerimenti l'ho scoperto - è ancora più semplice: $ {level: uppercase = true: padding = -5} lo fa :-) – user3114804

+0

Per quanto riguarda il 2017, il LayourRenderer il nome è cambiato da $ {padding} a $ {pad}. Oltre a ciò, tutto funziona –