[英]NLog memory target error
我在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");
之后,我訪問目標的日志(仍在構造函數中),並且有幾條消息。 但是,在N條消息之后,NLog會停止將任何消息寫入存儲目標。 更重要的是,如果您像我在開始時那樣嘗試通過名稱獲取目標,則它會返回null。 一段時間后,在nlog上擺弄也陷入了OutOfMemoryException。 文件目標工作正常。 如何修復MemoryTarget不寫日志並刪除自身?
UPD:我查看了NLog內部調試日志,並注意到在某些時候目標被擦除了。 我的主程序有一個NLog配置,一個dll是另一個。 但是它們是相同的,不應相互沖突。 內部日志在這里http://pastebin.com/M885xmBi
因此,問題基本上是NLog Config的沖突。 我有一個帶有NLog函數的項目,還有一個使用該項目作為dll的wpf應用程序。 即使它們的配置是相同的,NLog讀取第一個配置並設置目標,然后它讀取第二個配置,但顯然失敗了(我不知道,NLog內部日志中沒有例外)並刪除了所有目標。 從dll項目中刪除配置可解決問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.