2015-05-20 39 views
3

Google App Engine Java使用java.util.logging创建日志消息。 我想修改显示在开发人员控制台 - 监控 - 日志中的日志消息。这个想法是添加喜欢的用户名一些额外的输出,而不把它在手动每条日志消息:如何自定义Google App Engine Java的日志记录?

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()); 
} 

我得到2处理器,一个ConsoleHandler和一个DevLogHandler但设置格式化程序会导致不显示其他日志。在GAE上,我得到了0处理程序。

当试图进入电影Logger.getGlobal(),而不是Logger.getLogger(""),我得到0处理器在本地实例和抛出:SecurityException:没有对GAE修改全局许可。尝试获取处理程序列表时,此例外已出现。

现在我的问题:有没有办法以这种方式修改开发者控制台的日志?如果是,如何?

回答

1

正如我回答我在过去得到了来自谷歌票我开了一个类似的问题

我会鼓励与记录仪篡改/处理程序使用 内部由GAE。

除此之外,全局记录不能自定义,你可以尝试将其与一个记录器,带有自定义名称

+0

感谢您的信息。你可以添加链接到票证?这对我的硕士论文来说是一个相当重要的决定;) – Lukas

+0

不幸的是,它是一张私人票证,不在我们公司的用户之外。 –

+0

好的,也许有这个事实的公开来源,或者其他人以任何方式解决了这个问题。 – Lukas

相关问题