#xml #nlog
#xml #nlog
Вопрос:
у меня есть переменная int в NLog.config <variable name="logLifetime2" value="5"/>
, но когда я использую ее в maxArchiveDays="${logLifetime2}"
, у меня возникает ошибка. maxArchiveDays видит мою переменную как строку.
<variable name="logLifetime2" value="5"/>
<targets>
<target name="Global" xsi:type="File"
fileName="Logs/GlobalLog.txt"
archiveNumbering="Date"
enableArchiveFileCompression="true"
archiveFileName="Archive/IPSlog.{#}.zip"
archiveDateFormat="yyyy-MM-dd"
maxArchiveDays="${logLifetime2}"
archiveEvery="Day" />
</targets>
Как создать в NLog.Config переменную int?
Комментарии:
1. Можете ли вы показать все содержимое вашего NLog.config? Какую версию NLog вы используете? При использовании NLog-config-variables внутри NLog.config они действуют как дословная копия и будут просто работать.
2.
<variable name="logLifetime2" value="5"/> <targets> <target name="Global" xsi:type="File" fileName="Logs/GlobalLog.txt" archiveNumbering="Date" enableArchiveFileCompression="true" archiveFileName="Archive/IPSlog.{#}.zip" archiveDateFormat="yyyy-MM-dd" maxArchiveDays="${logLifetime2}" archiveEvery="Day" />
я использую последний пакет nlog nugget. я не могу отправить все Nlog.config, потому что есть ограничение по символу3. Когда другие публикуют комментарии о недостающих деталях в вашем вопросе. Тогда лучше просто отредактировать свой вопрос и включить в вопрос недостающие детали.
Ответ №1:
При использовании этой конфигурации:
<?xml version="1.0" encoding="utf-8" ?>
<nlog throwConfigExceptions="true" internalLogFile="${basedir}/Logs/nlog-internal.txt" internalLogLevel="Debug" >
<variable name="logLifetime2" value="5"/>
<targets>
<target name="Global" type="File"
fileName="Logs/GlobalLog.txt"
archiveNumbering="Date"
enableArchiveFileCompression="true"
archiveFileName="Archive/IPSlog.{#}.zip"
archiveDateFormat="yyyy-MM-dd"
maxArchiveDays="${logLifetime2}"
archiveEvery="Day" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="Global" />
</rules>
</nlog>
Затем мой nlog-internal.txt содержит это:
2020-11-12 16:01:58.1235 Debug Setting 'NLog.Targets.FileTarget.maxArchiveDays' to '5'
Так что это работает на моей машине. Обязательно используйте версию NLog, в которой поддерживается maxArchiveDays (введена в NLog 4.7)
Но я думаю, вам придется смириться с любыми ошибками, возникающими при проверке XML-схемы (XSD), поскольку переменные NLog-Config очень особенные.
Комментарии:
1. у меня проблема с intellisense для Nlog.config. этот пример действительно работает
2. @ИванОнищенко Ах, так что ваша проблема была с проверкой XML-схемы. Мой пример не включает проверку XSD, поэтому ошибок нет. Не забудьте обновить свой файл NLog.xsd при обновлении NLog. Смотрите также: nuget.org/packages/NLog . Схема