2014-09-04 50 views
0

當日志消息被推入列表中時,我還需要將時間戳存儲在列表中。我們可以得到時間戳和推入list.I我推登錄到列表如下如何將log4j消息存儲到列表中並將其提取到創建的swt表中時,我們需要將時間戳存儲到列表中

import java.util.ArrayList; 
import java.util.List; 

import org.apache.log4j.RollingFileAppender; 
//import org.apache.log4j.spi.LoggingEvent; 
import org.apache.log4j.spi.LoggingEvent; 

public class Listappender extends RollingFileAppender { 

    private List<LoggingEvent> events = new ArrayList<LoggingEvent>(); 
    static List<String> clone = new ArrayList<String>(); 

    @Override 
    public synchronized void doAppend(LoggingEvent event) { 
     //System.out.println("hi...."); 
     //events.clear(); 
     events.add(event); 
     super.doAppend(event); 
     clone.clear(); 

     clone.add((String) event.getMessage()); 

     //getEvents(); 

     /* 
     for (int j = 0; j < events.size(); j++){ 

      System.out.println(events.get(j)); 
      System.out.println(j); 
     }*/ 

    } 



    public List<String> getEntries() 
    { 
     return clone; 
    } 


} 

回答

0

只需將LoggingEvent保存在列表中。您不必獲取消息並將其保存在不同的列表中。 LoggingEvent有一個public final long getTimeStamp()方法來提供時間。嘗試使用此代碼:

import java.util.ArrayList; 
import java.util.List; 

import org.apache.log4j.RollingFileAppender; 
import org.apache.log4j.spi.LoggingEvent; 

public class ListAppender extends RollingFileAppender { 

    private final List<LoggingEvent> events = new ArrayList<LoggingEvent>(); 

    @Override 
    public synchronized void doAppend(LoggingEvent event) { 
     events.add(event); 
     super.doAppend(event); 
    } 

    public synchronized List<LoggingEvent> getLoggingEvents() { 
     List<LoggingEvent> clone = new ArrayList<>(events); 
     events.clear(); 
     return clone; 
    } 

} 
相關問題