私はNLogのメモリターゲットとファイルのターゲットを持っているが、私はその後、このNLogメモリターゲットエラー
target = (MemoryTarget)NLog.LogManager.Configuration.FindTargetByName("memory");
のようなコンストラクタでMemoryTargetを取得し、この
<?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>
ように設定され、私は、ターゲットのアクセスログ(まだコンストラクタ内にあります)にはいくつかのメッセージがあります。しかし、N個のメッセージの後、NLogはメモリターゲットへのメッセージの書き込みを停止します。さらに、私が始めてやったようにターゲットを名前で取得しようとすると、nullが返されます。また、いくつかの時間が過ぎると、nlogの周りにはOutOfMemoryExceptionが発生します。ファイルのターゲットは正常に動作します。 MemoryTargetを修正してログを作成せず、自分自身を削除する方法はありますか?
UPD:NLogの内部デバッグログを見て、ある時点でターゲットが消去されることに気付きました。私は、NLogの設定と別のものとのDLLを持つ私のメインプログラムを持っています。しかし、彼らは同じであり、互いに争うべきではありません。内部ログはここにありますhttp://pastebin.com/M885xmBi
nlogユーザに循環バッファを保存するか、すべてを保存しますか? – Thomas
@Thomas正直なところ私はストレージのランタイム状態を知らない。その情報が必要な場合は、ソースコードを確認する必要があります –