我正在尝试处理从Enterprise Library 4升级到6后最近弹出的Enterprise Library 6 LogWriter异常.
我得到:
尚未为Logger静态类设置LogWriter.设置它调用Logger.SetLogWriter方法.
要么
LogWriter已设置.
......取决于场景.
问题是,它抛出一个InvalidOperationException似乎太通用的处理,甚至检查使用
if (Logger.Writer == null)
Run Code Online (Sandbox Code Playgroud)
...也产生异常,那么如何检查作者是否被设置?
伙计们
我正在尝试将LogCallHandler用于拦截,如下所示:
<interception>
<policy name="policyLogCallHandler">
<matchingRule name="LogsMachingRule" type="NamespaceMatchingRule">
<constructor>
<param name="namespaceName" value="NetTcpContracts" />
</constructor>
</matchingRule>
<callHandler type="Microsoft.Practices.EnterpriseLibrary.Logging.PolicyInjection.LogCallHandler, Microsoft.Practices.EnterpriseLibrary.PolicyInjection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="callHandlerLog">
<constructor>
<param name="eventId" value="9002"/>
<param name="logBeforeCall" value="true"/>
<param name="logAfterCall" value="true"/>
<param name="beforeMessage" value="--- begin"/>
<param name="afterMessage" value="--- end"/>
<param name="includeParameters" value="true"/>
<param name="includeCallStack" value="true"/>
<param name="includeCallTime" value="true"/>
<param name="priority" value="1"/>
<param name="order" value="1"/>
</constructor>
</callHandler>
</policy>
</interception>
Run Code Online (Sandbox Code Playgroud)
此配置引发异常:"尚未为Logger静态类设置LogWriter.设置它调用Logger.SetLogWriter方法."
我使用运行时配置找到了解决此问题的方法:
IConfigurationSource configurationSource = ConfigurationSourceFactory.Create();
LogWriterFactory logWriterFactory = new LogWriterFactory(configurationSource);
Logger.SetLogWriter(logWriterFactory.Create());
LogEntry entry = new LogEntry();
entry.Message = "I am …Run Code Online (Sandbox Code Playgroud) 我得到以下异常.我正在使用Enterprise Library 6.0 Application Logging Block.
System.InvalidOperationException was unhandled by user code
HResult=-2146233079
Message=The configuration section for Logging cannot be found in the configuration source.
Source=Microsoft.Practices.EnterpriseLibrary.Logging
StackTrace:
at Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterFactory.LogWriterConfigurationBuilder.Create()
at Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterFactory.Create()
at Logger..ctor() in \MBSLogger.cs:line 19
at EventLoggingTest.test_log_simple_exception() in c:\Users\Vinay.Joseph\Documents\Visual Studio 2013\EventLoggingTest.cs:line 20
InnerException:
Run Code Online (Sandbox Code Playgroud)
代码库如下.
IConfigurationSource configurationSource = ConfigurationSourceFactory.Create();
LogWriterFactory logWriterFactory = new LogWriterFactory(configurationSource);
Logger.SetLogWriter(logWriterFactory.Create());
if (!Logger.IsLoggingEnabled())
{
}
else {
Logger.Write(new LogEntry(){
Severity = System.Diagnostics.TraceEventType.Information,
TimeStamp = DateTime.Now,
Message = "Hello World"
});
}
Run Code Online (Sandbox Code Playgroud)
请告诉我哪里出错了.
我单击 Microsoft.Practices.EnterpriseLibrary.ConfigConsoleV6.vsix。用于安装企业库配置。但它无法安装这个。我需要你的帮助,请参阅下面的查看安装日志
**6/23/2015 10:45:41 AM - Supported Products :
6/23/2015 10:45:41 AM - Microsoft.VisualStudio.Ultimate
6/23/2015 10:45:41 AM - Version : [11.0]
6/23/2015 10:45:41 AM - Microsoft.VisualStudio.Premium
6/23/2015 10:45:41 AM - Version : [11.0]
6/23/2015 10:45:41 AM - Microsoft.VisualStudio.Pro
6/23/2015 10:45:41 AM - Version : [11.0]
6/23/2015 10:45:41 AM -
6/23/2015 10:45:41 AM - References :
6/23/2015 10:45:41 AM - -------------------------------------------------------
6/23/2015 10:45:41 AM - Identifier : Microsoft.VisualStudio.MPF
6/23/2015 10:45:41 AM - Name : Visual Studio MPF
6/23/2015 10:45:41 AM - …Run Code Online (Sandbox Code Playgroud)