簡體   English   中英

NLog內存目標錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM