NLog用C#获取消息

时间:2017-07-05 18:16:42

标签: c# nlog

我最近在ASP.Net项目中使用Nlog为客户取得了成功。我需要连接到具有自己的事件日志管理的现有应用程序,并为他们提供我的日志信息的副本。

有没有办法使用任何日志函数获取我提供给Nlog的字符串?

示例:

logger.Info("My info");
logger.Debug("My debug");
logger.Error("My error");
logger.Warn("My warn");
List<string> messages = logger.getStrings() <-- this is what I need

我如何获取字符串“我的信息”,“我的调试”,“我的错误”和“我的警告”作为数组或列表&lt;&gt;?

1 个答案:

答案 0 :(得分:4)

您可以使用MemoryTarget

nlog.config:

<nlog internalLogFile="c:\tempp\nlog-internal.log" internalLogLevel="Info">
    <targets>
        <target xsi:type="Memory" name="target1" layout="${message}" />
    </targets>
    <rules>
        <logger name="*" writeTo="target1" />
    </rules>
</nlog>

C#:

var target = LogManager.Configuration.FindTargetByName<MemoryTarget>("target1");
IList<string> messages = target.Logs;

消息为strings,由nlog.config中的layout属性呈现

API docs for MemoryTarget

如果您需要将它们写入其他组件,我建议您创建一个custom target