2013-12-18 19 views
8

Ich benutze NLog für die Protokollierung. Derzeit mein Layout-String ist:NLog: Format Loglevel mit Whitespaces

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

Das in den folgenden Logs führt:

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

Was will ich jetzt den "$ level" zu formatieren, mit Whitespaces zu füllen, so dass es aussieht Wie eine Tabelle mit 5 Zeichen.

würde ich gerne haben:

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

ich etwas nicht traurig finden ... Kann mir jemand helfen?

Vielen Dank!

Antwort

12

Verwenden Sie den PaddingLayoutRendererWrapper. Ich bin nicht sicher, wo eine gute Config Beispiel ist, aber die Quelle in NLog des Quell-Repository befindet sich hier, so können Sie vielleicht die richtige Konfiguration Reverse Engineering:

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

Ich glaube, Sie so etwas tun würde :

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

wird hoffentlich, dass Beispiel Pad alle Protokollpegelwerte mit 5 Räume auf der linken Seite und dann auf eine absolute Länge Verkleidung 5.

padding=5 Mittel 5 padcharacters hinzuzufügen (def ault ist ' ') nach links (negative bedeutet Pad auf der rechten Seite)

fixedlength=true ist ein boolescher Wert, der angibt, dass das aufgefüllte Ergebnis auf eine maximale Länge von "Padding" (d. h. 5 in meinem Beispiel)

+13

Vielen Dank! Padding war das Wort, nach dem ich suche :-) Mit deinen Hinweisen habe ich es herausgefunden - es ist noch einfacher: $ {level: versa = true: padding = -5} tut es :-) – user3114804

+0

Für 2017 der LayourRenderer Der Name wurde von $ {padding} zu $ ​​{pad} geändert. Ansonsten funktioniert alles –