Google App Engine Java 使用 java.util.logging 创建日志消息。我想修改在开发者控制台 - 监控 - 日志中显示的日志消息。我的想法是添加一些额外的输出,比如用户名,而不需要手动将其放入每个日志消息中:
log.info("user action");
应该会产生类似于日志输出的结果。
user "testuser": user action
因此我创建了自己的格式化程序:
public class TestFormatter extends Formatter {
@Override
public String format(LogRecord record) {
// find out username..
return "user " + username + ": " + record.getMessage();
}
}
将这个设置为logging.properties中ConsoleHandler的格式化程序没有效果:
java.util.logging.ConsoleHandler.formatter = com.example.guestbook.TestFormatter
在本地机器上部署并尝试通过编程方式添加它时:
Logger rootLogger = Logger.getLogger("");
Handler[] handlers = rootLogger.getHandlers();
log.info("Handler[] size: " + handlers.length);
for(Handler h : handlers) {
log.info(h.toString());
h.setFormatter(new TestFormatter());
}
我有两个处理程序,一个是"ConsoleHandler",一个是"DevLogHandler"。但是设置格式化程序会导致没有进一步的日志显示。在GAE上却得到了0个处理程序。
当尝试访问"Logger.getGlobal()"而不是"Logger.getLogger("")"时,在本地实例上得到0个处理程序,在GAE上得到"SecurityException: No permission to modify global"异常。这个异常出现在尝试获取处理程序列表时就已经产生了。
现在我的问题是:是否有一种方法可以修改开发人员控制台的日志?如果有的话,该如何操作?
log.info("user action");
。这是所有其他用户记录日志的正常方式,所以我认为没有任何会影响您的问题。它会出现在开发者控制台中,就像您想要的那样 :) - Nick