2016-12-30 78 views
1

我做了一個簡單的類,並嘗試使用Logger類方法打印日誌消息,並使用FileAppender將日誌消息附加到文件中。 但是,日誌不會打印在文件中。使用log4j時沒有得到預期的輸出

任何人都可以指導我如何使用我製作的程序在文件中打印這些日誌。 我用在類路徑的log4j-1.2.17 API:

代碼爲以下程序:

public class Client { 
static Logger l=Logger.getLogger(Client.class.getName()); 
public static void main(String[] args) { 
    Layout l1=new SimpleLayout(); 
    Appender a; 
    try{ 
     a=new FileAppender(l1,"my.txt",true); 
     l.debug("Hello Jc"); 
     l.info("Hello Jc"); 
     l.fatal("This is not the error message"); 
     l.addAppender(a); 
    } 
    catch(Exception e){ 
    } 
    System.out.println("your logic executed Successfully"); 
    // TODO Auto-generated method stub 

} 

輸出:

log4j:WARN No appenders could be found for logger (Client). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
your logic executed Successfully 
在文件

預期輸出:

DEBUG Hello Jc 

INFO Hello Jc 

FATAL This is not the error message 
+0

你有log4j.properties或log4j.xml文件在你的類路徑附加器爲您的類和包? – SMA

+0

不,我沒有使用.properties或xml,但我用一個簡單的java類來擁有appender和佈局對象。 – user6389648

回答

2

的log4j:警告沒有附加目的地可以爲記錄器(客戶端)中找到。 log4j:WARN 請正確初始化log4j系統。 log4j的:WARN

a = new FileAppender(l1,"my.txt",true); 
    l.debug("Hello Jc"); 
    l.info("Hello Jc"); 
    l.fatal("This is not the error message"); 
    l.addAppender(a); // too late 

,因爲你嘗試登錄之前該文件的appender被添加到配置你有這個問題。如何在沒有任何appender的情況下登錄?

測井作業之前,所以拉昇l.addAppender(a)

a = new FileAppender(l1,"my.txt",true); 
l.addAppender(a); // appender is added, you can log 
l.debug("Hello Jc"); 
l.info("Hello Jc"); 
l.fatal("This is not the error message"); 
1

只需我創建了一些Util類s來初始化日誌配置;

public static void initLogger() { 
    try { 
     String filePath = "D:/my.log"; 
     PatternLayout layout = new PatternLayout("%-5p %d %m%n"); 
     RollingFileAppender appender = new RollingFileAppender(layout, filePath); 
     appender.setName("log"); 
     appender.setMaxFileSize("10MB"); 
     appender.activateOptions(); 
     Logger.getRootLogger().addAppender(appender); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

然後我調用這個方法,併成功寫入文件;

public static void main(String[] args) { 
    LoggerUtil.initLogger(); 

    Logger accessLog = Logger.getLogger("log"); 

    accessLog.info("This is info message."); 
    accessLog.warn("This is warn message."); 
    accessLog.error("This is error message."); 
    accessLog.fatal("This is fatal message."); 
} 
相關問題