繁体   English   中英

java.util.logging消息模板问题

[英]java.util.logging message template question

NetBeans建议我更改编写具有字符串连接的日志记录语句的方式,说明将字符串连接转换为消息模板,以便声明如下:

log.severe("Completed at:  " + new Date());

变了

log.log(Level.SEVERE, "Completed at:  {0}", new Date());

问题是现在日期没有打印出来。 相反,文字字符串“{0}”会被打印出来。 还有其他我想做的事吗?

假设您发布的代码段不是导致问题的原始代码...在您的消息中包含单个撇号将导致您描述的问题类型。 java.util.logging.Logger.log将消息传递给java.text.MessageFormat ,它要求您转义撇号

例如:

log.log( Level.FINE, "Can't handle {0}.", id );
log.log( Level.FINE, "Can''t handle {0}.", id );

日志:

Cant handle {0}.
Can't handle ID0001.

我知道PrintStream有一种format这种方式工作的format方法,尽管Java使用类似C的%前缀而不是C#-like {}包装器。 Logger没有这样的方法。 您正在调用log覆盖,根据我的经验,只记录完全给定的字符串,并且不对Object参数执行任何操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM