Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 为什么log4net使用对象?_Logging_Indexing_Log4net - Fatal编程技术网

Logging 为什么log4net使用对象?

Logging 为什么log4net使用对象?,logging,indexing,log4net,Logging,Indexing,Log4net,为什么log4net中的ILog签名使用对象作为参数?例如: void Info(object message); 为什么不直接将其显式化,并使用字符串呢?在幕后是否有一些复杂的反射功能,例如将消息展平并将其转换为表格结构?或者这仅仅是原始创造者的事后发现 这是一个对象,似乎表明了前者,但我没有看到任何关于这方面的文档 此外,我还计划将对象存储在数据库中,log4net能否自动为我创建实体,以便轻松索引消息的内容?例如,如果我传入一个具有3个属性的对象,我希望在单独的列中看到这3个属性

为什么log4net中的ILog签名使用对象作为参数?例如:

    void Info(object message);
为什么不直接将其显式化,并使用字符串呢?在幕后是否有一些复杂的反射功能,例如将消息展平并将其转换为表格结构?或者这仅仅是原始创造者的事后发现

这是一个对象,似乎表明了前者,但我没有看到任何关于这方面的文档

此外,我还计划将对象存储在数据库中,log4net能否自动为我创建实体,以便轻松索引消息的内容?例如,如果我传入一个具有3个属性的对象,我希望在单独的列中看到这3个属性。同样地,对于关系,我希望看到关系是动态建立的

  • 我同意Chris的观点,他们使用
    object
    这样你就可以传递任何东西。您只需要担心提供一个有用的
    ToString()
    实现。类似的操作在
    string.Format()
    中完成

  • Log4net不直接支持您的“数据库场景”,尽管它应该可以在不需要太多开销的情况下实现它。基本上,您需要编写自己的appender,并使用
    MessageObject
    属性从日志事件中检索原始MessageObject。然后,您可以“轻松”地以任何方式写入数据库


  • 因此,我猜它可以将任何支持
    的东西转换为字符串
    。谢谢,我会看一看。