请帮助将NLog v1.1转换为NLog v2.0

问题描述:

我想在我们的Silverlight v4.0项目中使用Sharedcache(sharedcache.codeplex.com)。但是,我们使用NLog v2.0进行客户端日志记录。 SharedCache目前只支持NLog v1.1,它会在我们的Web服务器上与NLog v2.0相冲突。请帮助将NLog v1.1转换为NLog v2.0

所以我决定将Sharedcache windows服务转换为使用NLog v2.0。汇编成功。但是,一旦我开始服务,我得到了这个错误。有人可以熟悉NLog吗?我认为这是抱怨布局。

这里是窗口服务配置文件:

<nlog autoReload="true" throwExceptions="true"> 
<targets async="true"> 
    <target name="shared_cache_general" type="File" layout="${longdate}|${level:uppercase=true}|${aspnet-request:item=logSession}|${message}" filename="C:\temp\logs\server\${date:format=yyyy-MM-dd}_shared_cache_general_log.txt"/> 
    <target name="shared_cache_traffic" type="File" layout="${longdate}|${level:uppercase=true}|${aspnet-request:item=logSession}|${message}" filename="C:\temp\logs\server\${date:format=yyyy-MM-dd}_shared_cache_traffic_log.txt"/> 
    <target name="shared_cache_tracking" type="File" layout="${longdate}|${level:uppercase=true}|${aspnet-request:item=logSession}|${message}" filename="C:\temp\logs\server\${date:format=yyyy-MM-dd}_shared_cache_tracking_log.txt"/> 
    <target name="shared_cache_sync" type="File" layout="${longdate}|${level:uppercase=true}|${aspnet-request:item=logSession}|${message}" filename="C:\temp\logs\server\${date:format=yyyy-MM-dd}_shared_cache_sync_log.txt"/> 
    <target name="shared_cache_memory" type="File" layout="${longdate}|${level:uppercase=true}|${aspnet-request:item=logSession}|${message}" filename="C:\temp\logs\server\${date:format=yyyy-MM-dd}_shared_cache_memory_log.txt"/> 
</targets> 
<rules> 
    <logger name="General" minlevel="Debug" writeTo="shared_cache_general" final="true"/> 
    <logger name="Traffic" minlevel="Debug" writeTo="shared_cache_traffic" final="true"/> 
    <logger name="Tracking" minlevel="Debug" writeTo="shared_cache_tracking" final="true"/> 
    <logger name="Sync" minlevel="Debug" writeTo="shared_cache_sync" final="true"/> 
    <logger name="Memory" minlevel="Debug" writeTo="shared_cache_memory" final="true"/> 
    <logger name="*" minlevel="Debug" writeTo="shared_cache_general"/> 
    <logger name="*" minlevel="Info" writeTo="shared_cache_general"/> 
</rules> 

当我开始在Visual Studio中的服务,我得到了以下NLOG例外:

{"Error when setting property 'Layout' on File Target[shared_cache_general]"} 


at NLog.Internal.PropertyHelper.SetPropertyFromString(Object o, String name, String value, ConfigurationItemFactory configurationItemFactory) in c:\NLogBuild\src\NLog\Internal\PropertyHelper.cs:line 107 
    at NLog.Config.XmlLoggingConfiguration.ConfigureObjectFromAttributes(Object targetObject, NLogXmlElement element, Boolean ignoreType) in c:\NLogBuild\src\NLog\Config\XmlLoggingConfiguration.cs:line 828 
    at NLog.Config.XmlLoggingConfiguration.ParseTargetElement(Target target, NLogXmlElement targetElement) in c:\NLogBuild\src\NLog\Config\XmlLoggingConfiguration.cs:line 562 
    at NLog.Config.XmlLoggingConfiguration.ParseTargetsElement(NLogXmlElement targetsElement) in c:\NLogBuild\src\NLog\Config\XmlLoggingConfiguration.cs:line 538 
    at NLog.Config.XmlLoggingConfiguration.ParseNLogElement(NLogXmlElement nlogElement, String baseDirectory) in c:\NLogBuild\src\NLog\Config\XmlLoggingConfiguration.cs:line 344 
    at NLog.Config.XmlLoggingConfiguration.ParseTopLevel(NLogXmlElement content, String baseDirectory) in c:\NLogBuild\src\NLog\Config\XmlLoggingConfiguration.cs:line 301 
    at NLog.Config.XmlLoggingConfiguration.Initialize(XmlReader reader, String fileName, Boolean ignoreErrors) in c:\NLogBuild\src\NLog\Config\XmlLoggingConfiguration.cs:line 247 
+1

这个问题最好在http://sharedcache.codeplex.com的论坛上提问。至于“使用NCR v2.0在SharedCache中替换NLog v1.1是多么容易”:你尝试过什么?发布一些代码并告诉我们什么是破坏。 –

+0

我试图用NLog v2.0编译代码并将项目转换为v2010 Visual Studio。它编译成功。但是,似乎配置文件的格式引发异常。我对NLog不太熟悉。所以我可以在这里发布NLog配置文件。 – tonyjy

+1

这是一个好主意,并会把这更多的在回答类别:)你能发布你得到的例外吗? –

我想通了。只需删除以下布局,它现在支持NLog v2.0。

${aspnet-request:item=logSession}|