我需要记录这个,因为我的自定义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
。我会找出原因和目的是什么。
答案 0 :(得分:4)
这应该使用LogLog
班级(log4net docs,log4j docs)
这是来自log4net文档,但log4j非常相似:
Log4net组件无法进行log4net日志记录调用。但是,确实如此 有时用户可以了解log4net正在做什么。
要查看输出,您需要启用内部日志记录 - 如何执行此操作取决于您正在使用的平台。