web-dev-qa-db-ja.com

log4netレイアウトパターンにタブを挿入するにはどうすればよいですか?

私の必要性は単純です-テキストログファイルをExcelで開いて、ログフィールドに一致する列に自動的に分割できるようにしたいのです。

そのためには、タブで区切られたログフィールドが必要です。

私のパターンは:%utcdate [%thread] %-5level %logger - %message%newline

次のようなものが必要です:%utcdate%tab[%thread]%tab%-5level%tab%logger%tab%message%newline

ありがとう。

28
mark

警告:私は実際にlog4netを使用していません。しかし、私が正しく理解していれば、構成はXMLファイルですよね。そして、パターンはいくつかの特別なトークンを含む単なるテキストです。では、実際のタブ文字をパターンに埋め込んでみましたか?タブのXMLシーケンスは	、例:

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

または、他の方法でパターンを指定する場合(おそらく、 PatternStringコンストラクター などを介して)、渡す文字列にタブ文字を含めるだけです。そのためのドキュメントコンストラクターは、文字列自体について話すためにPatternLayout docsを延期し、 彼らは言う

変換パターン内にリテラルテキストを自由に挿入できます。

(彼らの強調。)とにかく、試してみる価値があります...

47
T.J. Crowder

これは私のために働いた:

1)ロギングクラスがインスタンス化されたら、次の行を追加します。

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

2)次に、log4net XMLで、新しく作成したlog4netプロパティへの参照を作成します。例えば:

<conversionPattern value="%property{tab}%message%newline" />
7
Gordon Slysz

パターンにタブを入力できますエスケープなし(レベルと日付の間のスペースを参照):

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

スペースを書き込むため、Visual Studioでタブを書き込むことはできませんが、メモ帳++にタブを入力してコピーし(ctrl + c ctrl + v)、機能しています。

編集:スタックオーバーフローは私のタブをスペースに置き換えました。したがって、独自のタブを入力する必要があります

2
Peter Dub

これがちょうどExcelに関するものである場合は、他の区切り文字を使用できます。おそらく;で十分でしょう。

別のオプションは、独自のパターンコンバーターを作成することです。例を見つけることができます ここ

0
Stefan Egli

Log4j2パターンレイアウトのタブは次のとおりです。\ t

0
rupweb