如何访问现有的NLog MemoryTarget

Fuzzerker

我正在重新设计现有的日志记录系统以使用NLog。我在配置文件中手动添加了对NLog的引用:

<targets>
  <target xsi:type="File" name="fileLogger" fileName="${basedir}\TRACE\${date:format=yyyy-MM-dd}.log" layout="TimeStamp:[${date}]|${message}" />
  <target xsi:type="Memory" name="MemLogger" layout="TimeStamp:[${date}]|${message}|${Type}" />
</targets>
<rules>
  <logger name="ApplicationLogger" levels="Info,Warn,Error" writeTo="fileLogger" />
  <logger name="ApplicationLogger" levels="Info,Warn,Error" writeTo="fileLogger" />
</rules>

我想做的是在代码中提取MemLogger日志并访问不同的部分(类型,消息,时间戳)。我将如何完成?我已经看到了如何从头开始创建新日志,但是我不想创建一个新的内存目标,我想访问配置中的现有日志,从中提取日志数据,然后清除内存(这样我就不会出现内存泄漏)。

如何在C#中访问MemLogger MemoryTarget?

谢尔盖·别列佐夫斯基(Sergey Berezovskiy)

不幸的是,您无法访问日志的不同部分。日志以渲染字符串存储,所有布局渲染器均已替换为其值。您所要做的就是手动解析每个日志字符串。例如

var target =(MemoryTarget)LogManager.Configuration.FindTargetByName("MemLogger");

foreach (string log in target.Logs)
{
    var parts = log.Split('|');
    var date = parts[0].Replace("TimeStamp:[", "").TrimEnd(']');
    var message = parts[1];
    var type = parts[2];
    //...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以干净的方式派生现有的Meteorite包?

来自分类Dev

如何覆盖现有的.txt文件

来自分类Dev

如何更换现有的直放站

来自分类Dev

如何更新现有的.plist?

来自分类Dev

NLog MemoryTarget的最大大小

来自分类Dev

如何重用现有的验证码/令牌来访问Google云端硬盘?

来自分类Dev

访问特征中现有的ActorSystem

来自分类Dev

如何停止现有的微调器

来自分类Dev

如何清除NLog中的MemoryTarget日志?

来自分类Dev

如何在现有的Hbase表上启用压缩?

来自分类Dev

如何“重写”现有的vim键绑定?

来自分类Dev

如何在Dockerfile中使用现有的Docker Volume

来自分类Dev

从流星应用程序访问现有的MongoDB集合

来自分类Dev

如何为现有的Java组件添加新功能?

来自分类Dev

如何更新现有的断开连接的实体

来自分类Dev

如何更新现有的Office插件?

来自分类Dev

如何跟踪现有的ansible项目

来自分类Dev

如何使用现有的tcp连接从bash脚本访问http服务器?

来自分类Dev

如何清除现有的setInterval?

来自分类Dev

如何通过dom元素访问现有的地图对象?

来自分类Dev

访问特征中现有的ActorSystem

来自分类Dev

如何停止现有的微调器

来自分类Dev

如何升级现有的graphenedb实例?

来自分类Dev

如何清除NLog中的MemoryTarget日志?

来自分类Dev

如何打开现有的LXD容器?

来自分类Dev

如何在我现有的 Angularjs 应用程序中进行用户访问控制

来自分类Dev

如何启动现有的 Django 项目?

来自分类Dev

如何修改现有的python文件

来自分类Dev

如何添加现有的 SQL 用户来访问 SQL Agent?