2012-03-21 10 views
1

コンソールのGWTロギング出力からタイムスタンプを削除したいと思います。GWTロガーからタイムスタンプを削除する

これを行う最も簡単な方法は何ですか?理想的には、.gwt.xmlの設定は素晴らしいでしょう。ここで

は、現在のタイムスタンプ付きの出力例です:

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

はEDIT:私はクライアント側でのみ興味があります。これは、log4jのと同じパターンの設定を使用しています

答えて

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

+0

+1:これは私が必要としていたものです。本当にありがとう! – jldupont

-1

、こちらをご覧ください:GWT-ログウィキでhttp://code.google.com/p/gwt-log/wiki/GettingStarted#Control_the_format_of_your_log_messages

をそれは言う:

サーバー側のログは自動的にバック JDK 1.4への落下は、Apache log4jのを検出し、ログ

投稿に「FINE」ログレベルがあるため、2番目のケースにする必要があります。クラスパスにLog4Jを含めるか、現在のjdr/jre-confディレクトリから "logging.properties"をチェックしてください。

+0

コンパイラは、 '' – jldupont

+0

Canあなたは "好きではない"と精緻化していますか?それは何のエラーメッセージですか? –

+1

gwt-logは別のプロジェクトです。彼は内蔵のgwtログ機能を使用しています – mabn

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

は「落とし穴」シングルトン依存関係を注入class--のコンストラクタでこれを行うには注意してくださいGWTが実際にロガーに実際にハンドラーを追加する機会を持っていることを確認したいと思います。

関連する問題