我有一个习惯
NLogViewerTarget
(
NLogViewerEx公司
)对于
Sentinel
这样地:
https://stackoverflow.com/a/15519783/6229375
现在,我还想为我的
FileTarget
,但当我应用它时,它不再工作(记录)。
<targets async="true">
<target
xsi:type="FileTargetEx"
name="file"
layout="${longdate} - ${level:uppercase=true}: ${message}${onexception:${newline}exception\: ${exception:format=tostring}}"
filename="${specialfolder:folder=commonapplicationdata}/company gmbh/${appname}/logs/${appname}.log"
keepfileopen="false"
archivefilename="${specialfolder:folder=commonapplicationdata}/company gmbh/${appname}/logs/${appname}_archive.{##}.zip"
archivenumbering="dateandsequence"
archiveevery="day"
maxarchivefiles="50"
archivedateformat="yyyy-mm-dd"
archiveoldfileonstartup="true"
createdirs="true"
enablearchivefilecompression="true"
encoding="utf-8"
header="############################################## ${appname} log ##############################################"
archiveabovesize="10485760"/>
<target xsi:type="NLogViewerEx"
name="sentinel"
address="udp://127.0.0.1:9999"/>
</targets>
我还试着定制
文件目标
,但这也不起作用。有人有解决方法吗?如何应用?
[Target("FileTargetEx")]
internal class FileTargetEx : FileTarget
{
private readonly Log4JXmlEventLayoutEx _Layout = new Log4JXmlEventLayoutEx();
public override Layout Layout { get { return _Layout; } set { } }
}
我给了
File Target
这个
xsi:type FileTargetEx
和
xsi:type NLogViewerEx
,没有任何成功。如果我这样做,哨兵和文件就不再记录了!
调试
启用内部调试日志后,我得到以下日志:
2017-12-13 09:32:52.6572 Info Loading assembly: HtCore
2017-12-13 09:32:52.6834 Debug ScanAssembly('NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c')
2017-12-13 09:32:52.7356 Debug Start auto loading, location: D:\Repositories\gitlab.company\dotNet\HtCore\HtCore\TestConsole\bin\Debug
2017-12-13 09:32:52.7356 Debug Auto loading done
2017-12-13 09:32:52.7496 Debug ScanAssembly('HtCore, Version=1.4.0.8, Culture=neutral, PublicKeyToken=null')
2017-12-13 09:32:52.7797 Debug Setting 'UppercaseLayoutRendererWrapper.uppercase' to 'true'
2017-12-13 09:32:52.7797 Debug Setting 'FileTargetEx.name' to 'file'
2017-12-13 09:32:52.7978 Debug Setting 'FileTargetEx.filename' to '${specialfolder:folder=commonapplicationdata}/company gmbh/Testconsole/logs/Testconsole.log'
2017-12-13 09:32:52.7978 Debug Setting 'SpecialFolderLayoutRenderer.folder' to 'commonapplicationdata'
2017-12-13 09:32:52.8108 Debug Setting 'FileTargetEx.keepfileopen' to 'false'
2017-12-13 09:32:52.8108 Debug Setting 'FileTargetEx.archivefilename' to '${specialfolder:folder=commonapplicationdata}/company gmbh/Testconsole/logs/Testconsole_archive.{##}.zip'
2017-12-13 09:32:52.8108 Debug Setting 'SpecialFolderLayoutRenderer.folder' to 'commonapplicationdata'
2017-12-13 09:32:52.8278 Debug Setting 'FileTargetEx.archivenumbering' to 'dateandsequence'
2017-12-13 09:32:52.8278 Debug Setting 'FileTargetEx.archiveevery' to 'day'
2017-12-13 09:32:52.8429 Debug Setting 'FileTargetEx.maxarchivefiles' to '50'
2017-12-13 09:32:52.8429 Debug Setting 'FileTargetEx.archivedateformat' to 'yyyy-mm-dd'
2017-12-13 09:32:52.8429 Debug Setting 'FileTargetEx.archiveoldfileonstartup' to 'true'
2017-12-13 09:32:52.8634 Debug Setting 'FileTargetEx.createdirs' to 'true'
2017-12-13 09:32:52.8634 Debug Setting 'FileTargetEx.enablearchivefilecompression' to 'true'
2017-12-13 09:32:52.8758 Debug Setting 'FileTargetEx.encoding' to 'utf-8'
2017-12-13 09:32:52.8758 Debug Setting 'FileTargetEx.header' to '############################################## Testconsole log ##############################################'
2017-12-13 09:32:52.8968 Warn Error when setting '############################################## ${appname} log ##############################################' on attibute 'header'
2017-12-13 09:32:52.9028 Error Parsing configuration from D:\Repositories\gitlab.company\dotNet\HtCore\HtCore\TestConsole\bin\Debug\NLog.config failed. Exception: NLog.NLogConfigurationException: Exception when parsing D:\Repositories\gitlab.company\dotNet\HtCore\HtCore\TestConsole\bin\Debug\NLog.config. ---> NLog.NLogConfigurationException: Error when setting property 'Header' on FileTargetEx Target[file] ---> System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei NLog.Targets.TargetWithLayoutHeaderAndFooter.set_Header(Layout value)
--- Ende der internen Ausnahmestapelüberwachung ---
bei NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj, String propertyName, String value, ConfigurationItemFactory configurationItemFactory)
bei NLog.Config.XmlLoggingConfiguration.ConfigureObjectFromAttributes(Object targetObject, NLogXmlElement element, Boolean ignoreType)
bei NLog.Config.XmlLoggingConfiguration.ParseTargetElement(Target target, NLogXmlElement targetElement, Dictionary`2 typeNameToDefaultTargetParameters)
bei NLog.Config.XmlLoggingConfiguration.ParseTargetsElement(NLogXmlElement targetsElement)
bei NLog.Config.XmlLoggingConfiguration.ParseNLogElement(NLogXmlElement nlogElement, String filePath, Boolean autoReloadDefault)
bei NLog.Config.XmlLoggingConfiguration.ParseTopLevel(NLogXmlElement content, String filePath, Boolean autoReloadDefault)
bei NLog.Config.XmlLoggingConfiguration.Initialize(XmlReader reader, String fileName, Boolean ignoreErrors)
--- Ende der internen Ausnahmestapelüberwachung ---
2017-12-13 09:32:52.9028 Debug --- NLog configuration dump ---
Nlog。形态
<?xml version="1.0" encoding="utf-8" ?>
<nlog
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
internalLogFile="c:\log.txt"
internalLogLevel="Debug">
<extensions>
<add assembly="HtCore"/>
</extensions>
<variable name="appname" value="Testconsole" />
<targets async="true">
<target
xsi:type="FileTargetEx"
name="file"
filename="${specialfolder:folder=commonapplicationdata}/company gmbh/${appname}/logs/${appname}.log"
keepfileopen="false"
archivefilename="${specialfolder:folder=commonapplicationdata}/company gmbh/${appname}/logs/${appname}_archive.{##}.zip"
archivenumbering="dateandsequence"
archiveevery="day"
maxarchivefiles="50"
archivedateformat="yyyy-mm-dd"
archiveoldfileonstartup="true"
createdirs="true"
enablearchivefilecompression="true"
encoding="utf-8"
header="############################################## ${appname} log ##############################################"
archiveabovesize="10485760"/>
<target xsi:type="NLogViewerEx"
name="sentinel"
address="udp://127.0.0.1:9999"/>
</targets>
<rules>
<logger name="*" writeTo="file" minlevel="Info"/>
<logger name="*" writeTo="sentinel" minlevel="Info"/>
</rules>
</nlog>
C类
[Target("FileTargetEx")]
internal class FileTargetEx : NLog.Targets.FileTarget
{
private readonly FileLayout _Layout = new FileLayout();
public override Layout Layout { get { return _Layout; } set { } }
}
internal class FileLayout : NLog.Layouts.SimpleLayout
{
}
我总是犯同样的错误。如果我设置
FileLayout
像
Layout
或者我的另一个
布局
我正在使用
哨兵
.
取消注释时
Layout override
,然后加载NLog。形态。。