現在,無論何時運行應用程序它都會創建一個文件(在Web.Config日誌記錄節中指定的文件名)。根據在QueryString中傳遞的GUID,在運行時更改日誌文件的位置和名稱
我想要的是在運行時更改文件的路徑和名稱(基於GUID作爲查詢刺痛傳遞)。
我做了一些研究,但可用的例子不適合我。如果有人可以提供代碼示例,將很感激。
現在,無論何時運行應用程序它都會創建一個文件(在Web.Config日誌記錄節中指定的文件名)。根據在QueryString中傳遞的GUID,在運行時更改日誌文件的位置和名稱
我想要的是在運行時更改文件的路徑和名稱(基於GUID作爲查詢刺痛傳遞)。
我做了一些研究,但可用的例子不適合我。如果有人可以提供代碼示例,將很感激。
正如您發現的那樣,您的需求並不適合企業庫的基於配置的方法。這並不是說它不能完成。
完成您想要的一種方法是使用日誌塊的編程配置。
一種方法是創建一個IDictionary來保存ID到LogWriters的映射。當一個ID進來時,檢查IDictionary中是否已經存在一個LogWriter。如果確實如此,則使用它,如果沒有,則創建一個新的LogWriter。
下面是使用Logging Fluent Interface配置UnityContainer,然後解決了一個寫進程並將其保存到一個字典一些示例代碼:
int id = 123123;
Dictionary<int, LogWriter> loggers = new Dictionary<int, LogWriter>();
ConfigurationSourceBuilder builder = new ConfigurationSourceBuilder();
builder.ConfigureLogging()
.WithOptions
.DoNotRevertImpersonation()
.SpecialSources.LoggingErrorsAndWarningsCategory.SendTo.FlatFile("Flat File Listener").ToFile(@"trace.log")
.LogToCategoryNamed("General")
.WithOptions.SetAsDefaultCategory()
.SendTo.FlatFile("AppSpecificFlatFile" + id)
.ToFile("logging" + id + ".log")
;
DictionaryConfigurationSource configSource = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(configSource);
coreExtension = new EnterpriseLibraryCoreExtension(configSource);
IUnityContainer container = new UnityContainer();
container.AddExtension(coreExtension);
var logger = container.Resolve<LogWriter>();
loggers[id] = logger;
這僅僅是一個樣品,而不是線程安全的或抽象的,但是應該希望有所幫助。
謝謝。你回答指示我走向正確的道路。 – Emahum 2012-03-30 13:02:17
如果你只需要在運行時更改跟蹤日誌文件,你可以簡單地刪除使用
System.Diagnostics.Trace.Listener.Remove(「Listener1」)當前的TraceListener;
然後添加一個新的監聽器與新的日誌文件名,
System.Diagnostics.Trace.Listener.Add(新System.Diagnostics.TextWriterTraceListener( 「NewLogFileName.txt」, 「LISTENER2」);
現在你的日誌將被記錄到NewLogFileName.txt
你能擴大的要求一點?是基於用戶日誌文件(每個用戶得到自己的日誌文件/文件夾)? – 2012-03-27 17:39:18
我加載不同在查詢字符串中傳遞ID時使用的DLL 所以,如果我傳遞ID 12345,我的web應用程序陽離子將加載12345.dll 如果我在查詢字符串中傳遞ID 67890。我的web應用程序將加載67890.dll並執行任何操作。 現在在EL我有平面文件監聽器,它創建日誌文件(LogInfo.log),當應用程序完成運行時,我只是將文件重命名爲任何我的ID。 問題是當我用兩個不同的ID同時運行兩次相同的應用程序時。 – Emahum 2012-03-28 02:07:46
我只是想創建基於我的ID的文件夾和文件名,我正在傳遞並將信息記錄在相應的文件夾和文件中。 – Emahum 2012-03-28 02:07:51