我有兩個不同級別的數據庫的記錄器。我想爲每個記錄器有不同的bufferSize。 一種方法是將兩個appender放在同一個數據庫中,只有bufferSize元素有所不同,但它是複製粘貼。 是否可以擴展已定義的appender並更改它的bufferSize屬性? 例如:log4net appenders與不同緩衝區的數據庫大小
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="20" />
...other elements
</appender>
<appender name="AdoNetAppenderChild" extends="AdoNetAppender">
<bufferSize value="1" />
</appender>
<logger name="Fatal" additivity="false">
<level value="FATAL"/>
<appender-ref ref="AdoNetAppenderChild" />
</logger>
<logger name="Common" additivity="false">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender" />
</logger>
我想避免是一種有兩個附加目的地具有相同的元素和屬性,只有不同的值是BUFFERSIZE
_「它的複製 - 粘貼」 _配置往往是,以及作爲冗長煩人的和重複的。在這種情況下,在配置可能是你最好的選擇,雖然增加了一倍 - 你真的不希望在運行時更改緩衝區大小,唯一的另一種選擇是編寫代碼來複制appender(或創建一個新的等),然後需要記錄,測試等。 – stuartd
謝謝。 還有一個問題,是爲每個MVC控制器配備單個靜態記錄器並在該記錄器中添加會話中的一些額外信息。 具體而言,如果我從會話中放置log4net.LogicalThreadContext。[「sessionVariable」],我可以確定它不會被覆蓋,或者應該在每個請求上創建新的記錄器實例嗎? – Error
我不會對靜態記錄器100%自信。 log4net緩存記錄器,因此在每個請求上創建新的更安全。 – stuartd