我想从控制台上的GWT日志记录输出中删除时间戳。
最简单的方法是什么?理想情况下,在.gwt.xml
配置中会很棒。
以下是当前带有时间戳的示例输出:
Wed Mar 21 08:23:57 EDT 2012 Job
FINE: Job: 'updater': end
编辑:我只对客户端感兴趣。
答案 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”。