在lo4j / net自定义appender中登录的最佳实践

时间:2015-07-17 05:48:36

标签: logging log4j log4net

我需要记录这个,因为我的自定义appender API正在增长,需要跟踪可能的错误和各种状态。

在自定义appender中使用log会导致抛出递归错误。我相信。

在自定义appender中记录信息/错误是否有任何好/最佳做法?

使用FIleStream和FileWriter的信号量锁似乎没问题,但是如果多个进程竞争在同一个日志文件上写入,它将锁定资源并减慢进程。

官方消息来源:http://logging.apache.org/log4net/release/faq.html

根据stuartd的建议,LogLog可用于内部调试。

首先在项目的〜.config文件中,必须设置2件事。

1)

<appSettings>
       <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

这可以启用log4net / j的内部调试

2)

<system.diagnostics>
<trace autoflush="true">
  <listeners>
    <add
    name="textWriterTraceListener"
    type="System.Diagnostics.TextWriterTraceListener"
    initializeData="C:\tmp\log4net.txt" />
  </listeners>
</trace>
</system.diagnostics>

这使Windows机器能够跟踪。要确保2件事 a)应用程序文件夹需要存在,因为它不检查日志文件是否存在文件夹。如果文件夹不存在,则不会创建文件 b)需要此程序的管理员权限,否则无法写入文件。

3)

log4net.Util.LogLog.Debug(null, "testing internal debug");

在自定义appender中,只需使用它来进行内部日志记录。对于输入参数{0},我不确定它为什么需要obj Type。我会找出原因和目的是什么。

1 个答案:

答案 0 :(得分:4)

这应该使用LogLog班级(log4net docslog4j docs

来完成

这是来自log4net文档,但log4j非常相似:

  

Log4net组件无法进行log4net日志记录调用。但是,确实如此   有时用户可以了解log4net正在做什么。

要查看输出,您需要启用内部日志记录 - 如何执行此操作取决于您正在使用的平台。