簡體   English   中英

在log4j中將ConsoleAppender替換為FileAppender

[英]Replacing ConsoleAppender to FileAppender in log4j

我使用ConsoleAppender在log4j logger上創建了一個Logger。 代碼如下,

public class AppLogger{ 

   static {
        ConsoleAppender ca = new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
        org.apache.log4j.Logger.getRootLogger().addAppender(ca);
   }
   public AppLogger(Class classname) {
        logger = LoggerFactory.getLogger(classname);
   }

   public void debug(String message){
        logger.debug(message);
   }
...
...
}

我沒有使用log4j.properties文件,因為我不知道在哪里放它。 上面的代碼工作正常,並在控制台上正確記錄。 現在我想改變它以使用FileAppender。

我只是更新了靜態構造函數,如下所示,

    FileAppender fa = new FileAppender();
    fa.setFile("d:/log.txt");
    fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
    org.apache.log4j.Logger.getRootLogger().addAppender(fa);

並增加fa insted的的ca 但是現在我收到了這個錯誤,

log4j:ERROR沒有名為[null]的appender的輸出流或文件集。

我不確定我要錯過哪個屬性來定義File Appender。

您忘記激活選項:

FileAppender fa = new FileAppender();
fa.setFile("d:/log.txt");
fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
fa.activateOptions(); \\ ← activate the options
org.apache.log4j.Logger.getRootLogger().addAppender(fa);

OptionHandler#activateOptions()激活先前通過調用選項setter設置的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM