質問: log4netのフィルタ機能について質問があります。 ``` ``` 上記のようにlog4netには様々なフィルタ機能があり、正規表現にマッチした文字列のみ出力するといったフィルタ機能や、ログレベルでフィルタする機能などがあります。 これを活用して、特定のクラスでのみログを出力できるように、 log4net.configに明記して管理したいと考えています。 logに出力元クラス名を記載するようにすれば、フィルタできると思うのですが、 このフィルタを複数追加することってできるんでしょうか? あるいは正規表現のフィルタ以外でこの機能を実装できますか?? log4netについてお詳しい方、お願いいたします。
回答: 私が実現したかったものは、log4netにプロパティを持たせて、 それをロジックでフィルターするものでしたので、 ``` ``` をlog4net.configのappenderに追加してやることで、 出力したいクラス名を取得することができました。 これは他にもいろいろと応用ができそうなので、記録としてここに残しておきますー。 コード上での取得は以下の通りです。 ``` var ilog = LogManager.GetLoggaer("TestLog"); //Loggerの取得 var looger = ilog.Logger as Logger; //Appenderの取得 var appender = logger.GetAppender("TestLogAppender") as FileAppender; //configに記載したPropertyFilterを取得(フィルター情報の先頭しか一度に取得できない) var filter = ((AppenderSkeleton)appender).FilterHead as PropertyFilter; //出力対象のクラス名を配列に格納 var targetClass = filter.StringToMatch.ToString().Sprit(','); ``` PropertyFilterはフィルターとは名ばかりで、プロパティとして設定するためにあるので、 configに記載しただけでは何も起きません。←ここがみそ