I created a custom NLogViewerTarget ( NLogViewerEx ) for Sentinel as follows: stack overflow
Now I also want to have a formatted message for my FileTarget , but when I use it, it no longer works (logs).
<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>
I also tried to create a custom FileTarget , but this also does not work. Does anyone have a solution, how to apply it?
[Target("FileTargetEx")] internal class FileTargetEx : FileTarget { private readonly Log4JXmlEventLayoutEx _Layout = new Log4JXmlEventLayoutEx(); public override Layout Layout { get { return _Layout; } set { } } }
I gave File Target xsi:type FileTargetEx and xsi:type NLogViewerEx without any success. If I do, Sentinel and File are no longer registered!
Debugging
After turning on the internal debug log, I get the following log:
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.conf
<?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 # class
[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 { }
I always get the same error. It doesn't matter if I set FileLayout as a Layout or my other Layout that I use with Sentinel .
When uncommenting the Layout override , then it loads NLog.conf ..