2017-03-08 194 views
0

私たちのアプリケーションでは、通常、作成するスレッドの名前を付けます。たとえば、スレッドを作成し、「WorkerThread」のような名前を付けます。Log4Netは "ThreadID"と "Thread Name"をログに出力します

のは、これが私のlog4netの設定ファイルの一部であるとしましょう:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <param name="File" value="C:\Logs\MyApp\myapp.log" /> 
     <param name="AppendToFile" value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="5" /> 
     <maximumFileSize value="1000MB" /> 
     <staticLogFileName value="true" /> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="DEBUG" /> 
     <levelMax value="FATAL" /> 
     </filter> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c :: %m%n" /> 
     </layout> 
    </appender> 

この構成で私のログに次のように出力されます:

2017-03-07 17:00:00,003 [MessagePump Worker] DEBUG MyApp.App :: Blah Blah Blah 

私は印刷にそれを希望:

2017-03-07 17:00:00,003 [MessagePump Worker: 2380] DEBUG MyApp.App :: Blah Blah Blah 

私は、スレッドパターンを含めるためにコンバートパターンに入れなければならないものを理解しようとしています(2380)上記の例のように。私はいくつかのGoogleの検索を行っているが、私は両方の "スレッド名"と "スレッドID"を印刷する方法を見つけるように見えることができません。誰にでもアイデアはありますか?アプリケーションのスレッドの使用で

+0

[NLogを検討する](https://github.com/nlog/nlog/wiki/Layout-RendererNets) –

+0

カスタムロガーラッパーを作成し、手動でThreadIDを追加することはできますか? https://logging.apache.org/log4net/release/example-apps.html ここでは、log4netをカスタムEventIDで拡張する方法について説明します。私はこのメソッドを使用して、EventIDの代わりにThreadIDを追加することができると思います。 –

+0

それは私がカスタム 'ConversionPattern'を必要としているかのようです。 – Denis

答えて

1

:変換パターンで

ThreadContext.Properties["threadid"] = Thread.CurrentThread.ManagedThreadId; 

%property{threadid} 
1

それは手動@はWouterの答えのように、ThreadContext.Propertyを追加することの外にできない場合があります。

こちらのドキュメントを参照してください:

PatternLayout Class

スレッドを|ロギングイベントを生成したスレッドの名前を出力するために使用されます。名前がない場合はスレッド番号を使用します。

スレッド名が存在しない場合は、スレッドIDのみを取得します。スレッドに名前が付けられていても、スレッドIDのみが必要なので、私は自分自身に不満を持っています。

関連する問題