私の必要性は単純です-テキストログファイルをExcelで開いて、ログフィールドに一致する列に自動的に分割できるようにしたいのです。
そのためには、タブで区切られたログフィールドが必要です。
私のパターンは:%utcdate [%thread] %-5level %logger - %message%newline
次のようなものが必要です:%utcdate%tab[%thread]%tab%-5level%tab%logger%tab%message%newline
ありがとう。
警告:私は実際にlog4netを使用していません。しかし、私が正しく理解していれば、構成はXMLファイルですよね。そして、パターンはいくつかの特別なトークンを含む単なるテキストです。では、実際のタブ文字をパターンに埋め込んでみましたか?タブのXMLシーケンスは	
、例:
<conversionPattern value="%utcdate	[%thread]	%-5level	%logger	%message%newline" />
または、他の方法でパターンを指定する場合(おそらく、 PatternString
コンストラクター などを介して)、渡す文字列にタブ文字を含めるだけです。そのためのドキュメントコンストラクターは、文字列自体について話すためにPatternLayout
docsを延期し、 彼らは言う :
変換パターン内にリテラルテキストを自由に挿入できます。
(彼らの強調。)とにかく、試してみる価値があります...
これは私のために働いた:
1)ロギングクラスがインスタンス化されたら、次の行を追加します。
log4net.GlobalContext.Properties["tab"] = "\t";
2)次に、log4net XMLで、新しく作成したlog4netプロパティへの参照を作成します。例えば:
<conversionPattern value="%property{tab}%message%newline" />
パターンにタブを入力できますエスケープなし(レベルと日付の間のスペースを参照):
<conversionPattern value="%level %date{HH:mm:ss,fff} ..." />
スペースを書き込むため、Visual Studioでタブを書き込むことはできませんが、メモ帳++にタブを入力してコピーし(ctrl + c ctrl + v)、機能しています。
編集:スタックオーバーフローは私のタブをスペースに置き換えました。したがって、独自のタブを入力する必要があります
これがちょうどExcelに関するものである場合は、他の区切り文字を使用できます。おそらく;
で十分でしょう。
別のオプションは、独自のパターンコンバーターを作成することです。例を見つけることができます ここ 。
Log4j2パターンレイアウトのタブは次のとおりです。\ t