Dot-Net

Log4Net StringMatchFilter 沒有過濾任何東西

  • May 26, 2021

我正在記錄 nHibernate 生成的所有 SQL,因為我們有一個奇怪的問題。僅此一項就會生成大量日誌,因此我試圖通過僅記錄包含某個 ID 的行來縮短它們。似乎一切都在發生。這裡有什麼奇怪的地方嗎?

   <appender name="RollingFile" type="log4net.Appender.RollingFileAppender,log4net" >

       <param name="File" value="nHibernate.txt" />
       <param name="AppendToFile" value="true" />
       <param name="DatePattern" value="yyyy.MM.dd" />

       <layout type="log4net.Layout.PatternLayout,log4net">
           <conversionPattern value="%d %p %m%n" />
       </layout>

       <filter type="log4net.Filter.StringMatchFilter">
           <stringToMatch value="5764" />
           <acceptOnMatch value="true" />
       </filter>

   </appender>

   <logger name="NHibernate.SQL" additivity="false">
       <level value="DEBUG" />
       <appender-ref ref="RollingFile" />
   </logger>

事實證明,您需要添加以下程式碼:

<filter type="log4net.Filter.DenyAllFilter" />

完整的塊如下所示:

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender,log4net">
   
   <param name="File" value="nHibernate.txt" />
   <param name="AppendToFile" value="true" />
   <param name="DatePattern" value="yyyy.MM.dd" />

   <layout type="log4net.Layout.PatternLayout,log4net">
       <conversionPattern value="%d %p %m%n" />
   </layout>

   <filter type="log4net.Filter.StringMatchFilter">
       <stringToMatch value="5764" />
       <acceptOnMatch value="true" />
   </filter>

   <!-- need this here! -->
   <filter type="log4net.Filter.DenyAllFilter" />
   
</appender>

<logger name="NHibernate.SQL" additivity="false">
   <level value="DEBUG" />
   <appender-ref ref="RollingFile" />
</logger>

引用自:https://stackoverflow.com/questions/11315839