不想重新发明轮子,所以我想知道是否有任何记录系统已经支持了我建议做的事情.
背景: 我正在开发一个非常大的系统,成千上万的用户可以在任何给定的时间访问服务器.周围有很多基础设施,所以你可以想象通过阅读这样一个生态系统中的日志来调查罕见的错误.
我们的系统使用log4j.
问题的主要根源是,当遇到未知错误时,原始实现者相当"经济",温和地说.当然,DEBUG级别在大多数情况下都会有所帮助,但当然,生产日志仅设置在ERROR级别:(
现在,我正在努力为我们的孩子创造一个更美好的世界,并希望扩展日志记录系统,以便对日志级别更加"宽容".
我想到的是这样的:
由于周围的DEBUG级别日志(ER之前的N和ERROR日志之后的M)可能包含重要数据,为什么不降低ERROR周围系统的日志级别.
我的想法:
有一些问题需要解决,但总的来说它可以起作用.
有任何想法吗?
干杯
BufferingForwardingAppender可能是一个解决方案。与该示例相关的文档指出“这意味着仅当记录了 WARN 或更高级别的消息时才会传递事件。还将传递最多 512 (BufferSize) 个任何级别的先前消息以提供上下文信息。未发送的消息将被丢弃。”
请参阅:http://logging.apache.org/log4net/release/config-examples.html#buffering
对于繁忙的 Web 应用程序,这可能不是最好的方法。在大多数情况下,您对与导致错误的特定会话或请求关联的日志消息感兴趣。由于一个请求通常由单个线程处理,因此可以通过为日志消息保留“每线程”缓冲区来实现。通过添加 Servlet 过滤器,每次服务器开始处理来自客户端的新请求时,都可以清除缓冲区。
或者更好的是保留(如果内存使用不是问题)每个 HTTPSession 的缓冲区。这样,您实际上不仅可以获取导致问题的请求的调试信息,还可以获取先前请求的调试信息(以帮助弄清楚用户在做什么)
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |