通用Java记录器输出类和成员名的null.null
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了通用Java记录器输出类和成员名的null.null,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1417字,纯文字阅读大概需要3分钟。
内容图文
![通用Java记录器输出类和成员名的null.null](/upload/InfoBanner/zyjiaocheng/661/02d3749947c0466ba97cc4ff49cbf112.jpg)
我将通用java.util.logging.Logger与以下初始化行结合使用:
private static final Logger _log = Logger.getLogger(Login.class.getName());
然后我像这样使用它(只是一个例子):
_log.log(Level.FINE, "Session id: {0}.", session.getId());
有时在日志中可以看到以下内容:
2014年11月24日17:26:13.692 FINE [http-nio-80-exec-1] null.null会话ID:18BD6989930169F77565EA2D001A5759.
但是大多数时候,它向我显示了正确的调用类和函数.其他班级和成员中也会发生这种情况.我不知道为什么会这样?这是Loggger中的错误吗?
解决方法:
输出看起来像是来自“ org.apache.juli.OneLineFormatter”的,而“ null.null”是源类和源方法的名称.从LogRecord.getSourceMethodName文档中:
May be null if no information could be obtained.
可能无法确定或已经为forced to null.
在查看“ org.apache.juli.AsyncFileHandler”的源代码时,存在一个错误,即该代码未捕获原始呼叫站点.
您可以在AsynchFileHandler上创建和install a filter,以在线程移交之前强制计算方法和类名.这是此类过滤器的示例:
public class InferCallerFilter implements Filter {
public boolean isLoggable(LogRecord record) {
record.getSourceMethodName(); //Infer caller.
return true;
}
}
甚至JDK gets this wrong附带的MemoryHandler.根据LogRecord文档:
Therefore, if a logging Handler wants to pass off a LogRecord to another thread, or to transmit it over RMI, and if it wishes to subsequently obtain method name or class name information it should call one of getSourceClassName or getSourceMethodName to force the values to be filled in.
内容总结
以上是互联网集市为您收集整理的通用Java记录器输出类和成员名的null.null全部内容,希望文章能够帮你解决通用Java记录器输出类和成员名的null.null所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。