2010-10-14 3 views
26

Mein Bedarf ist einfach - Ich möchte in der Lage sein, meine Textprotokolldatei in Excel zu öffnen, so dass es automatisch in Spalten bricht, die den Protokollfeldern entsprechen.Wie füge ich Registerkarten in das log4net Layoutmuster ein?

Dafür brauche ich die Log-Felder mit einem Tab getrennt.

Mein Muster ist: %utcdate [%thread] %-5level %logger - %message%newline

Ich brauche so etwas wie: %utcdate%tab[%thread]%tab%-5level%tab%logger%tab%message%newline

Dank.

Antwort

40

Vorbehalt: Ich habe log4net nicht verwendet. Aber wenn ich richtig verstehe, ist die Konfiguration eine XML-Datei, oder? Und das Muster ist nur Text mit einigen speziellen Token. Haben Sie versucht, tatsächliche Tab-Zeichen in Ihr Muster einzubetten? Die XML-Sequenz für eine Registerkarte 	, zB:

<conversionPattern value="%utcdate&#9;[%thread]&#9;%-5level&#9;%logger&#9;%message%newline" /> 

oder wenn Sie das Muster eine andere Art und Weise sind Versorgung (vielleicht über die PatternString constructor oder was auch immer), ist nur Tabulatoren in der Zeichenfolge Sie vorbei in . die docs für diesen Konstruktor der PatternLayout docs verschieben über die Zeichenfolge selbst und there they say zu sprechen:

Sie sind frei legen jeden wörtlichen Text innerhalb des Umwandlungsmusters.

(Ihr Schwerpunkt.) Einen Versuch wert, trotzdem ...

+2

Danke. \ t funktioniert nicht, aber funktioniert in der Tat. – mark

+0

@mark: Guter Deal, froh, dass geholfen hat. –

0

Wenn dies nur über Excel ist, dann könnten Sie ein anderes Trennzeichen verwenden, vielleicht wäre sogar ein ; gut genug.

Eine andere Möglichkeit wäre, einen eigenen Musterkonverter zu schreiben. Ein Beispiel kann here gefunden werden.

+0

Nein, das ist nicht nur für Excel. Die Datei sollte für Menschen lesbar bleiben. – mark

+0

Dann gehen Sie für Option 2. Soweit ich sagen kann log4net ist derzeit nicht in der Lage zu tun, was Sie wollen. –

6

Das ist für mich gearbeitet:

1) Wenn Ihre Logging-Klasse instanziiert wird, fügen Sie diese Zeile:

log4net.GlobalContext.Properties["tab"] = "\t"; 

2) Dann in der log4net-XML, einen Verweis auf Ihre neu erstellte log4net-Eigenschaft. Zum Beispiel:

<conversionPattern value="%property{tab}%message%newline" /> 
+0

Diese Lösung funktionierte besser für mich, weil ich xml-Transformationen auf log4net.xml (mit slowcheeath) anwende, und das zurück in ein Tab-Zeichen konvertiert. – BernardV

0

Sie Registerkarte in Muster eingeben können ohne zu entkommen (siehe Raum zwischen Ebene und Datum):

<conversionPattern value="%level %date{HH:mm:ss,fff} ..." /> 

Ich kann tab in Visual Studio schreiben, weil es Räume schreibt, aber Ich tippte Tab in Notepad ++ kopieren Sie es (Strg + C Strg + V) und es funktioniert.

EDIT: Stapelüberlauf ersetzt meine Registerkarte mit Leerzeichen. Sie müssen also Ihre eigene Registerkarte eingeben

Verwandte Themen