2017-05-25 235 views
1

我正在學習log4j,我仍然面臨這個問題。使用log4j如何在日誌文件中打印System.out.println語句

正如我當前的示例中,我無法在日誌文件中打印System.out.println語句。

我已經經歷了堆棧溢出中的其他問題和答案,這是一個重複的問題,但我仍然不理解這些。

下面是Java類

public class Testing 
{ 
private final static Logger logger = Logger.getLogger(Testing.class); 
static 
{ 
    PropertyConfigurator.configure("log4j.properties"); 
} 
public static void main(String args[]) 
{ 
    System.out.println("Entered main method..............."); 
    logger.error("An error has occurred might"); 
} 
} 

log4j.properties文件:

log4j.rootLogger=DEBUG, file, console 

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=logs/justfortesting.log 
log4j.appender.file.Append=true 
log4j.appender.file.ImmediateFlush=true 
log4j.appender.FILE.filter.b=org.apache.log4j.varia.LevelMatchFilter  
log4j.appender.FILE.filter.b.LevelToMatch=ERROR  
log4j.appender.FILE.filter.b.AcceptOnMatch=false 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n 

log4j.logger.com.log4j=DEBUG, file, console 

log4j.additivity.com.log4j=false 

因此,任何建議,我需要更改/添加新的東西呢??

回答

0

我得到了上述問題的解決方案,通過修改我的測試類,並增加了一個新的類與現有的碼。

public class Testing 
{ 
private final static Logger logger = Logger.getLogger(Testing.class); 
static 
{ 
    PropertyConfigurator.configure("log4j.properties"); 
} 
public static void main(String args[]) 
{ 
    Logger out = Logger.getLogger("SystemOut"); 
    Level info = Level.INFO; 
    System.setOut(new PrintStream(new LoggingOutputStream(out, info),true)); 
    System.out.println("Entered main method..............."); 
    System.out.println("Printing 2nd..............."); 
} 
} 

新增LoggingOutputStream類印刷System.out.println語句中的日誌文件。

0

System.out.println()寫入標準輸出。如果你想要寫這些消息的日誌,你必須調用記錄方法:

public static void main(String args[]) 
{ 
    logger.info("Entered main method..............."); 
    logger.error("An error has occurred might"); 
}