【问题标题】:Logging errors/ warnings automatically c#自动记录错误/警告c#
【发布时间】:2014-09-04 20:30:01
【问题描述】:

我正在寻找一种方法,让我的代码在 c# 中使用参数名称和值以及正在尝试的操作自动记录错误或警告。我愿意为此付出代价。目前我能想到的唯一方法是不直接调用任何方法,而是通过接受表达式/函数的执行程序(扩展)方法调用它。但是,我宁愿不必通过这样做来乱扔我的代码。有没有办法做到这一点?

谢谢

【问题讨论】:

  • 看看PostSharp等面向方面的编程工具
  • PostSharp 不断出现在我正在阅读的其他文章中。我觉得有点愚蠢,因为日志记录是他们网站上给出的示例之一。谢谢!
  • @alex:你的目标是什么技术? Windows 客户端(WPF、Winforms)、Web(asp.net、asp.mvc)。请用适当的标签标记您的问题。
  • 您是否尝试记录所有方法调用及其参数?我怀疑您是否愿意接受这种性能打击。如果您有超过几千行代码,您的应用程序将由于跟踪每个方法调用及其参数的开销而突然停止。对于现实世界的应用程序,您需要更有选择性地跟踪什么。 Postsharp 可以工作,但即使在跟踪关闭时也会为方法参数分配代理对象。这在我的分析器中显示为瓶颈。我一直告诉他们通过摆脱 postsharp 跟踪来解决这个问题。
  • @AloisKraus 有趣,它是一个常规的 c# 编译项目。如果速度成为我可以生存的问题,我可能想要进行 2 种差异编译,一种使用拦截器,另一种没有。

标签: c# error-logging


【解决方案1】:

您是否尝试过使用this question 中的AppDomain.FirstChanceException,或者您是否需要除异常之外的更多信息?

另外,Log4Net 显然也不错。我以前听说过,但从未使用过。来自this question的alos。

【讨论】:

  • 其实不知道,但我想要更多。理想情况下,我想记录任何返回默认返回类型的实例。此外,最好通过方法或类属性指定方法的日志记录级别
  • 你能解释一下你的意思吗?就像如果您期待 string,您想要每次返回 nullString.Empty 的日志?
  • 好吧,例如,如果我调用类 Cook(ingredient) 而不传入成分(以 null 或诸如此类的形式传入),那么一般来说,在这种情况下,IEnumerable 将被传回想将成分为空的事实记录为“参数成分具有空值——返回空”
  • 这是一个简单的案例,即使操作是 lambda exp,我也希望它能够工作
  • 我不知道你可以做些什么来全局记录这个。据我所知,您必须为此设置要记录的每个函数的捕获。
猜你喜欢
  • 2011-08-10
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 2011-04-01
  • 2018-03-18
  • 1970-01-01
相关资源
最近更新 更多