流利的配置问题
问题描述:
我试图让流畅的配置工作没有成功。我收到以下错误:流利的配置问题
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>()
内部);
有什么建议吗?
答
我刚刚得到了类似的错误。这是因为配置不正确。我使用FormatWithSharedFormatter,但没有定义共享格式化程序。
var configSource = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(configSource);
或:
期间我有没有投诉
EnterpriseLibraryContainer.Current
= EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
我得到的是,试图从统一检索时,记录仪没有被发现。删除FormatWithSharedFormatter配置使一切正常。
答
一旦您完成配置,您实际上对配置做了什么?你把它放到一个配置源并将其提供给一个容器或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的是。试试这个,看看它是否有效 - 如果没有,那么还有其他的东西丢失。
我仍然无法让它工作。 – jgauffin 2010-11-09 14:53:40