【问题标题】:Dynamic logging based on configuration file基于配置文件的动态日志记录
【发布时间】:2016-12-12 20:26:36
【问题描述】:

我有一个要求,我必须向我的应用程序添加一项功能, 使用哪个基于配置文件的日志将添加到代码中。 因此,例如,如果我的类名是 abc.cs,用户将在配置文件中进行以下条目。

<entry typeName = "mynamespace.abc">
<LineNumbers ="1,2,3,10, 12">
</entry>

现在,对于在代码流中到达之前的行号 1、2、3、10、12,将在日志文件中创建一个日志条目,提及“在类型 y 中达到行号 x”。

我们希望这在运行时发生,无需任何代码更改或 dll 更改, 仅当需要更多日志记录时,在配置文件中添加类型和行号。

通过互联网,我发现 AOP 可以帮助实现这一点,但我真的不确定哪种框架或方法可以帮助实现这一点。

期待相同的指南。 我的应用程序使用 c# 和 .net 框架。

【问题讨论】:

  • 一般的 AOP 框架,特别是 PostSharp,旨在将代码(建议)注入严格定义的切入点,例如方法入口、方法出口等。不支持基于行号拦截任意代码行AOP。

标签: c# .net aop postsharp


【解决方案1】:

当需要这种日志记录时,您可以附加一个(远程)调试器并配置操作断点以在命中某些行时进行记录。

【讨论】:

    【解决方案2】:

    可以通过 PDB 阅读器获得所需的结果。 请看:Common Compiler Infrastructure: Metadata API 使用该工具,您可以按类型跟踪代码位置。

    CCI 元数据 API 允许应用程序有效地分析或 修改 .NET 程序集、模块和调试 (PDB) 文件。 CCI 元数据支持 .NET System.Reflection 和 System.Reflection.Emit API,但性能要好得多。它也是 提供任何 .NET 中都没有的附加功能 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 2018-05-05
      • 2011-02-09
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多