从GWT记录器中删除时间戳

时间:2012-03-21 12:31:27

标签: java gwt logging

我想从控制台上的GWT日志记录输出中删除时间戳。

最简单的方法是什么?理想情况下,在.gwt.xml配置中会很棒。

以下是当前带有时间戳的示例输出:

Wed Mar 21 08:23:57 EDT 2012 Job 
FINE: Job: 'updater': end

编辑:我只对客户端感兴趣。

3 个答案:

答案 0 :(得分:3)

此日志记录功能无法真正配置。你需要编写自己的格式化程序: 在onModuleLoad()的开头调用它:

Handler[] handlers = Logger.getLogger("").getHandlers();
for(Handler h : handlers){
  h.setFormatter(new MyCustomLogFormatter());
}

以下是格式化程序的示例:

public class MyCustomLogFormatter extends TextLogFormatter{
    private static DateTimeFormat timeFormat = DateTimeFormat.getFormat("HH:mm:ss.SSS");
    public MyCustomLogFormatter() {
        super(true);
    }

    @Override
    public String format(LogRecord event) {
        StringBuilder message = new StringBuilder();
        message.append(getRecordInfo(event, " "));
        message.append(event.getMessage());
        message.append(getStackTraceAsString(event.getThrown(), "\n", "\t"));
        return message.toString();
    }
    @Override
    protected String getRecordInfo(LogRecord event, String newline) {
        Date date = new Date(event.getMillis());
        StringBuilder s = new StringBuilder();
        s.append(timeFormat.format(date));
        s.append(" GWT ");
        s.append(event.getLevel().getName());
        String loggerName = event.getLoggerName();
        String[] split = loggerName.split("\\.");
        s.append(" ");
        s.append(split[split.length-1]);
        s.append(newline);
        s.append(": ");
        return s.toString();
      }
}

更多:http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html

答案 1 :(得分:0)

接受的答案显示了如何自定义GWT日志消息。但是,这个例子比必要的长。如果有人想删除时间戳(原始问题),这里有一个较短的代码段:

Handler[] handlers = Logger.getLogger("").getHandlers();

for (Handler h : handlers) {
    h.setFormatter(new TextLogFormatter(false) {

        @Override
        public String format(LogRecord event) {
            return event.getLoggerName() + ": " +
                    event.getLevel().getName() + ": " +
                    event.getMessage();
        }
    });
}

注意在单例依赖注入类的构造函数中执行此操作的“陷阱” - 您希望确保GWT有机会首先将处理程序实际添加到记录器。

答案 2 :(得分:-1)

它使用与log4j相同的模式配置,请参见此处:http://code.google.com/p/gwt-log/wiki/GettingStarted#Control_the_format_of_your_log_messages

在gwt-log wiki中,它说:

  

服务器端日志记录自动检测Apache log4j,后退   到JDK1.4日志记录

由于帖子中存在“精细”日志级别,因此应该是第二种情况。可以在类路径中包含Log4J,也可以从当前的jdr / jre-conf目录中选中“logging.properties”。