NLog在C#中获取日志消息

时间:2018-10-17 23:18:26

标签: c# nlog

我最近开始使用NLog,我想在将其保存到文件中之前在应用程序中显示该日志。

如何获得以下信息?

string message = logger.getLog() <---- This is what I need

5 个答案:

答案 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/

https://www.nuget.org/packages/NLog.Windows.Forms/

答案 2 :(得分:0)

您可以在NLog记录器周围编写包装器。因此,您调用DavidsLogger.Log(error),该方法将日志消息存储在内存中,您可以在其中访问它,然后调用NLog上的常用方法将消息永久存储在日志中。

答案 3 :(得分:0)

您可以在Nlog.Config中创建targetsrules,如下所示:

<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

以下是级别的“优先级”(从上面的链接复制):

级别示例

  • 最高等级:重要的东西
  • 错误,例如应用程序崩溃/异常。
  • 警告错误的行为,但应用程序可以继续
  • 信息正常行为,例如发送的邮件,用户更新的个人资料等。
  • 调试已执行的查询,用户经过身份验证,会话已过期
  • 跟踪开始方法X,结束方法X等

答案 4 :(得分:0)

您可以使用我的NLogViewerhttps://github.com/dojo90/NLogViewer)。这是wpf控件。我知道您写了win forms,但也许将来您会需要它。

还有可用的nuget程序包-> https://www.nuget.org/packages/Sentinel.NLogViewer

enter image description here