Dot-Net
使用 Log4Net 以程式方式強制一個新的日誌文件
注意:我閱讀了這個問題和答案,但它不適用於我想要的:Log4Net:以程式方式指定多個記錄器(帶有多個文件附加程序)
我有一個 WCF 服務,它是一種“問答”式服務。它獲取輸入並發送輸出。它根本不會持續存在。
我需要將每個問答會話記錄在一個單獨的文件中。
我有一個 Appender(目前是 RollingAppender)。
有沒有辦法為每次呼叫我的 WCF 服務啟動一個新的日誌文件?
注意:我使用的是 XML 佈局,其想法是可以解析日誌輸出並以圖形方式顯示(稍後的功能)。有點像“查詢計劃”。這是我需要將它們放在單獨的文件中的另一個原因。
注意:如果需要其他原因,Log4Net XmlLayoutBase 將不會刪除 xml 頁腳,直到應用程序關閉。對於託管在 IIS 中的 WCF 服務,這並不是真正的計劃事件。
而不是記錄到文件,也許您可以嘗試記錄到數據庫表並使用記錄的數據記錄會話 ID。通過這種方式,您可以根據會話 ID 對錶進行選擇並僅查看其數據。
這似乎對我有用:
public static void StartNewFile(this ILog log, string newFileName) { Logger logger = (Logger) log.Logger; while (logger != null) { foreach (IAppender appender in logger.Appenders) { FileAppender fileAppender = appender as FileAppender; if (fileAppender != null) { fileAppender.File = newFileName; fileAppender.ActivateOptions(); } } logger = logger.Parent; } }它需要以下參考資料:
using log4net; using log4net.Appender; using log4net.Repository.Hierarchy;