我最近开始使用NLog,我想在将其保存到文件中之前在应用程序中显示该日志。
如何获得以下信息?
string message = logger.getLog() <---- This is what I need
答案 0 :(得分:1)
在这种情况下,最好使用内存目标。 (docs memory target)
config:
<targets>
<target name="target1" xsi:type="Memory" layout="${message}"/>
<target name="target2" xsi:type="File" fileName="C:\log\NLog.log" layout="${longdate}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Error" writeTo="target1,target2" />
</rules>
日志消息:
LogManager.GetLogger("logger1").Info("my log message");
检索:(另请参见:MemoryTarget class - API docs)
var target = LogManager.Configuration.FindTargetByName<MemoryTarget>("target1");
IList<string> logs = target.Logs;
// show logs etc.
// delete if not needed any more: target.Logs.Clear()
答案 1 :(得分:0)
您需要添加适当的Target以便Nlog调用。
例如MethodCall目标
https://github.com/NLog/NLog/wiki/MethodCall-target
如果需要,Nlog还可以为Web和WinForm提供一些帮助目标。 https://www.nuget.org/packages/NLog.Web/
答案 2 :(得分:0)
您可以在NLog记录器周围编写包装器。因此,您调用DavidsLogger.Log(error),该方法将日志消息存储在内存中,您可以在其中访问它,然后调用NLog上的常用方法将消息永久存储在日志中。
答案 3 :(得分:0)
您可以在Nlog.Config中创建targets
和rules
,如下所示:
<targets>
<target name="console" xsitype="Console" layout="${longdate}|${message}"/>
<target name="file" xsitype="File" fileName="C:\log\NLog.log" layout="${longdate}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Error" writeTo="console,file" />
</rules>
这会将日志写入控制台和文件。您也可以将日志发送到电子邮件。此链接可以使您对NLog有了基本了解:
https://www.c-sharpcorner.com/article/basic-understanding-of-nlog/
在这里: https://github.com/nlog/NLog/wiki/Configuration-file
以下是级别的“优先级”(从上面的链接复制):
级别示例
答案 4 :(得分:0)
您可以使用我的NLogViewer
(https://github.com/dojo90/NLogViewer)。这是wpf
控件。我知道您写了win forms
,但也许将来您会需要它。
还有可用的nuget程序包-> https://www.nuget.org/packages/Sentinel.NLogViewer