NLog 4.1.2在构造函数中崩溃

时间:2018-10-05 07:29:31

标签: c# nlog

我有一个程序可以在本周一(2018-10-01)运行,但在周三开始崩溃(周二未使用)。

该程序已面向客户发布,因此我无法对其进行调试! 客户说“什么都没有改变”,我程序中的所有文件都像以前一样。

这是一个C#Winforms程序,通过事件查看器,我发现崩溃发生在NLog启动时(在ctor中)。

我尝试使用内部日志记录,但是没有创建日志文件。

关于什么是问题和/或我应该如何解决的任何想法?

事件查看器应用程序中的消息:

  

DCMark Winform.exe框架   版本:v4.0.30319说明:由于   未处理的异常。异常信息:System.Xml.XmlException位于   System.Xml.XmlTextReaderImpl.Throw(System.Exception)在   System.Xml.XmlTextReaderImpl.Throw(System.String,System.String [])
  在System.Xml.XmlTextReaderImpl.ParseText(Int32 ByRef,Int32 ByRef,   Int32 ByRef)位于System.Xml.XmlTextReaderImpl.ParseText()   System.Xml.XmlTextReaderImpl.ParseElementContent()在   System.Xml.XmlTextReaderImpl.Read()位于   System.Xml.XmlTextReader.Read()位于   System.Xml.XmlTextReaderImpl.Skip()位于   System.Xml.XmlTextReader.Skip()在   System.Configuration.XmlUtil.StrictSkipToNextElement(System.Configuration.ExceptionAction)   在   System.Configuration.BaseConfigurationRecord.ScanSectionsRecursive(System.Configuration.XmlUtil,   System.String,布尔值,System.String,   System.Configuration.OverrideModeSetting,布尔值),位于   System.Configuration.BaseConfigurationRecord.ScanSectionsRecursive(System.Configuration.XmlUtil,   System.String,布尔值,System.String,   System.Configuration.OverrideModeSetting,布尔值),位于   System.Configuration.BaseConfigurationRecord.ScanSections(System.Configuration.XmlUtil)   在System.Configuration.BaseConfigurationRecord.InitConfigFromFile()

     

异常信息:System.Configuration.ConfigurationErrorsException
  在   System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(布尔)   在   System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(System.Configuration.ConfigurationSchemaErrors)   在System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
  在   System.Configuration.ClientConfigurationSystem.OnConfigRemoved(System.Object,   System.Configuration.Internal.InternalConfigEventArgs)

     

异常信息:System.Configuration.ConfigurationErrorsException
  在System.Configuration.ConfigurationManager.PrepareConfigSystem()处
  在System.Configuration.ConfigurationManager.GetSection(System.String)   在System.Configuration.ConfigurationManager.get_AppSettings()在   NLog.Common.InternalLogger.GetSettingString(System.String,   System.String)在   NLog.Common.InternalLogger.GetSetting [[System.Boolean,mscorlib,   版本= 4.0.0.0,文化=中性,   PublicKeyToken = b77a5c561934e089]] [(System.String,System.String,   布尔),位于NLog.Common.InternalLogger..cctor()

     

异常信息:System.TypeInitializationException位于   DC.DCMark.Program.Main()上的DC.DCMark.Form1..ctor()

NLog.config文件

<?xml version="1.0" encoding="utf-8" ?>
<nlog throwExceptions="true"
internalLogFile="C:/Temp/log.txt" internalLogLevel="Trace">
  <targets>
    <target xsi:type="File" name="f" fileName="${specialfolder:folder=CommonApplicationData}/Foo/Bar/Logs/Bar_${shortdate}.log"
            layout="${longdate} | ${uppercase:${level}} | ${callsite} | ${message} | ${exception:format=ToString}" />
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="f" />
  </rules>
</nlog>

编辑:添加了App.config文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="DC.DCMark.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
        </sectionGroup>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
    </startup>
    <userSettings>
        <DC.DCMark.Properties.Settings>
            <setting name="Location" serializeAs="String">
                <value>400, 100</value>
            </setting>
            <setting name="Size" serializeAs="String">
                <value>840, 900</value>
            </setting>
            <setting name="Maximised" serializeAs="String">
                <value>False</value>
            </setting>
            <setting name="Minimised" serializeAs="String">
                <value>False</value>
            </setting>
        </DC.DCMark.Properties.Settings>
    </userSettings>
</configuration>

2 个答案:

答案 0 :(得分:1)

您的web.config / app.config中存在XML错误

在NLog 4.4中,已修复NLog不会崩溃的问题。 (请参见bug report),因此更新即可解决该问题。建议更新至最新版本4.5.10。

答案 1 :(得分:1)

我发现了错误!

我发现了这个https://stackoverflow.com/a/16332304/1009355 表示在%localappdata%\ companyname \ programname ...中创建了一个app.config副本。

我删除了名称中包含程序名称的所有目录。

一切正常!

感谢所有帮助,没有它,我将找不到解决方案!