У меня есть цель памяти и целевой файл в NLog установить как этот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"
throwExceptions="true"
internalLogLevel="Off" internalLogFile="D:\temp\nlog-internal.log">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="memory" xsi:type="Memory" layout="${level}|${time}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
<logger name="*" minlevel="Info" writeTo="memory" />
</rules>
</nlog>
я получаю MemoryTarget в конструкторе, как этот
target = (MemoryTarget)NLog.LogManager.Configuration.FindTargetByName("memory");
После этого я получить доступ к атакам log (все еще в конструкторе), и есть несколько сообщений. Но после N количества сообщений NLog прекращает записывать любые сообщения в целевую память. Более того, если вы попытаетесь получить цель по имени, как в начале, она возвращает null. Также через некоторое время и вождение вокруг nlog падает с OutOfMemoryException. Хотя цель файла работает нормально. Как вы можете исправить MemoryTarget, не записывая журналы и не удаляя себя?
UPD: Я просмотрел внутренний журнал отладки NLog и заметил, что в какой-то момент цели стираются. У меня есть моя основная программа с конфигурацией NLog и DLL с другой. Но они одинаковы и не должны конфликтовать друг с другом. Внутренний журнал здесь http://pastebin.com/M885xmBi
делает nlog пользовательским круговым буфером или сохраняет все? – Thomas
@ Томас честно, я не знаю состояния среды хранения. Вы должны проверить исходный код, если вам нужна эта информация –