【问题标题】:logging- changing implementation?日志改变实现?
【发布时间】:2010-12-28 01:20:02
【问题描述】:

我们一直在使用 log4net 来记录我们的 asp.net 网络表单应用程序。我们的日志一般在我们的业务层,典型的实现是这样的

SomeMethodCall(MethodParams)
{
  Log.Start("Starting Some Method");
  try
  {
   //do something
  }
  catch(Exception ex)
  {
    Log.Exception("exception in SomeMethodCall" + ex.message);
  }

  Log.End("End SomeMethod");
}

在我看来,这有点笨拙。有没有不使用 AOP 的更清洁的方法?我不确定我是否需要添加框架的开销,仅用于日志记录,我想我知道它会给我很多其他选择(我这样做不需要)

我正在考虑使用一些 AOP 框架以更简洁的方式来完成它,只需通过使用属性标记方法来记录和处理异常。

我关心 AOP 的两件事(在我最初阅读之后)。

一些框架将代码注入您的 IL(根据我的理解),并且担心它是否会误导我。我可能正在查看我的 AOP 框架给出的第 x 行,实际上它可能是我的应用程序中的第 y 行。我的恐惧是没有根据的吗?

性能:如果使用 AOP 框架会增加多少性能开销。

编辑:我也在调查PolicyInjectionApplicationBlock。不幸的是,我没有在我的业务逻辑中更改实现的奢侈

【问题讨论】:

    标签: c# asp.net logging log4net aop


    【解决方案1】:

    您是说您的大多数/所有方法都采用这种结构吗?如果是这样,我的建议是降低您的日志记录。 (我强调这是建议,也可能是有争议的建议)。

    实际上不应该以这种方式使用每个方法的进入和退出的全面日志,而是更有策略地放置日志条目。我喜欢确保所有日志消息都有一个“目的”——如果我想不出在调试时该日志消息会以某种方式帮助或帮助我的场景,那么它在我的代码中没有任何业务!

    【讨论】:

      【解决方案2】:

      您可以阅读this,也可以阅读7 approaches for AOP in .Net,我在Java 中使用AOP,我没有发现性能问题。无论如何check here to be careful...

      其他
      Spring.Net AOP

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 2010-09-06
        • 2020-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多