【问题标题】:Log4NET, ADONetAppender and custom fieldsLog4NET、ADONetAppender 和自定义字段
【发布时间】:2012-11-23 18:30:20
【问题描述】:

我可以使用 ADONetAppender 设置 log4NET,当我想通过 log.Info(message) 记录消息时捕获事物的状态时,一切正常。

由于我将根据在整个应用程序中更改的 ActionID 从应用程序中的各个位置进行日志记录,因此我如何扩展内容以便我可以使用 ActionID 发出诸如 log.Info(ActionID, message) 之类的调用最终进入数据库?

【问题讨论】:

  • 如何调用 log.info(String.Format("{0}:{1}",ActionID,message));

标签: c# asp.net-mvc log4net adonetappender


【解决方案1】:

您可以在调用log.Info() 之前使用GlobalContext.Properties 将自定义字段添加到log4net,方法如下:

GlobalContext.Properties["ActionID"] = ActionID;

然后,在您的 ADONetAppender 配置中,您可以使用 %property{ActionID} 访问此自定义字段。

【讨论】:

    【解决方案2】:

    我认为@bcwood 可能有最好/最简单的想法,即简单地使用 GlobalContext.Properties 来存储您要记录的 id。

    但是,如果 id 对您来说非常重要,并且如果您想简化 id 的设置(例如通过向各种日志记录方法添加参数而不是必须添加单独的调用来设置 id 值) GlobalContext),那么您可能会在 log4net 存储库中查看此文件夹。

    http://svn.apache.org/viewvc/logging/log4net/trunk/extensions/net/1.0/log4net.Ext.EventID/cs/src/

    它包含一个如何扩展 log4net 记录器以添加“EventID”参数的示例。

    这对我来说似乎很重要(子类化 log4net 记录器,创建您自己的 LogManager 来分配您的记录器等)。

    如果您选择包装 log4net,并在内部使用 log4net 的记录器进行记录,您可能会更简单一些。

    使用我在上面链接的方法(或类似但更简单的包装 log4net 记录器的方法)的优点是您的日志调用站点可以看起来像您建议的那样:

    logger.Info(123, "Hello");
    logger.Info(321, "Good bye");
    

    与@bcwood 的建议相比,这将使您的日志调用站点看起来像这样:

    GlobalContext.Properties["ActionID"] = 123;
    logger.Info("Hello");
    GlobalContext.Properties["ActionID"] = 321;
    logger.Info("Good bye");
    

    【讨论】:

      【解决方案3】:

      尝试通过包装 info 方法来创建自定义函数。

      void InfoLog(int ActionID, string message)
      {
         log.info(String.Format("{0}:{1}",ActionID.ToString(),message));
      }
      

      【讨论】:

      • 这会使ADONetAppender 可以访问ActionID 参数吗?最终,ActionID 需要在它自己的数据库字段中结束。
      • 不,它只是将 actionid 附加到正在记录的消息中。
      • 我需要类似以下内容:log.info(5,"my message") 将 5 存储在我的数据库的 statusID 字段中,并将“my message”存储在数据库的 message 字段中。我已经在该 log.info(message) 中工作,并跟踪相关信息,但我需要 log.info(value,message) 将值发布到数据库。这在 log4net 中是否可行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2017-02-19
      相关资源
      最近更新 更多