2010-07-07 63 views
2

我試圖讓流暢的配置工作沒有成功。我收到以下錯誤:流利的配置問題

Dim logwriter As LogWriter = EnterpriseLibraryContainer.Current.GetInstance(Of LogWriter)() 

配置:

嘗試獲取類型日誌寫的情況下,關鍵的「」

,當我嘗試訪問日誌寫進程發生

激活錯誤

Dim formatBuilder As New FormatterBuilder() Dim builder As New ConfigurationSourceBuilder() builder.ConfigureInstrumentation().EnableLogging() builder.ConfigureLogging.LogToCategoryNamed("Important") _ .WithOptions.SetAsDefaultCategory() _ .SendTo.RollingFile("StandardListener") _ .RollEvery(RollInterval.Midnight) _ .RollAfterSize(50000) _ .WhenRollFileExists(RollFileExistsBehavior.Increment) _ .FormatWith(formatBuilder.CustomFormatterNamed("StandardFormatter", GetType(StandardFormatter))) _ .ToFile("D:\LogFiles\" + fileName) 

更新

我添加

 var configSource = new DictionaryConfigurationSource(); 
     builder.UpdateConfigurationWithReplace(configSource); 
     EnterpriseLibraryContainer.Current 
      = EnterpriseLibraryContainer.CreateDefaultContainer(configSource); 

我仍然不能得到一個寫進程,並在Logger LAB未能得到它太(它使用EnterpriseLibraryContainer.Current.GetInstance<LogWriter>()內部);

有什麼建議嗎?

回答

0

我剛剛得到了類似的錯誤。這是因爲配置不正確。我使用FormatWithSharedFormatter,但沒有定義共享格式化程序。

var configSource = new DictionaryConfigurationSource(); 
builder.UpdateConfigurationWithReplace(configSource); 

或:

期間我有沒有投訴

EnterpriseLibraryContainer.Current 
    = EnterpriseLibraryContainer.CreateDefaultContainer(configSource); 

我得到的是,試圖從統一檢索時,記錄儀沒有被發現。刪除FormatWithSharedFormatter配置使一切正常。

1

一旦您完成配置,您實際上對配置做了什麼?你把它放到一個配置源並將其提供給一個容器或Entlib?

乍一看你的配置看起來不錯,但只是構建了對象圖。之後你需要這樣的東西:

dim configSource as new DictionaryConfigurationSource() 
    builder.UpdateConfigurationSourceWithReplace(configSource) 
    ' To use container directly 
    dim container as IUnityContainer = new UnityContainer() _ 
    .AddExtension(New EnterpriseLibraryCoreExtension(configSource)) 

    ' Or, to use Entlib static APIs 
    EnterpriseLibraryContainer.Current = EnterpriseLibrary.CreateDefaultContainer(configSource) 

這應該做到這一點。如果沒有,請發佈更詳細的示例,我可能會爲您進行調試。

UPDATE

下面的示例工作得很好對我來說,我剛剛試了一下:

Imports Microsoft.Practices.EnterpriseLibrary.Logging 
Imports Microsoft.Practices.EnterpriseLibrary.Common.Configuration 
Imports Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners 

Module Module1 

    Sub Main() 
     InitializeEntlib("test.log") 

     Logger.Write("This is a test message") 
    End Sub 

    Sub InitializeEntlib(ByVal logFileName As String) 
     Dim builder As New ConfigurationSourceBuilder 
     builder.ConfigureLogging() _ 
     .LogToCategoryNamed("Important") _ 
     .WithOptions.SetAsDefaultCategory() _ 
     .SendTo _ 
      .RollingFile("StandardListener") _ 
       .RollEvery(RollInterval.Midnight) _ 
       .RollAfterSize(50000) _ 
       .WhenRollFileExists(RollFileExistsBehavior.Increment) _ 
      .FormatWith(New FormatterBuilder().TextFormatterNamed("Text Formatter")) _ 
      .ToFile("D:\LogFiles\" + logFileName) 

     Dim configSource As New DictionaryConfigurationSource() 
     builder.UpdateConfigurationWithReplace(configSource) 

     EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(configSource) 
    End Sub 
End Module 

唯一的不同,我可以看到的是我使用的TextFormatter,而不是無論你StandardFormatter的是。試試這個,看看它是否有效 - 如果沒有,那麼還有其他的東西丟失。

+0

我仍然無法讓它工作。 – jgauffin 2010-11-09 14:53:40