2017-01-16 124 views
2

我有一個我們很快部署到客戶的cmd行工具。我在我正在使用的框架的cmd窗口中出現一條令人討厭的StdErr消息,並且我正努力將該消息重定向到Log4J的日誌文件。Log4J:將Stderr消息重定向到主日誌文件

這裏是我的log4j.xml文件:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="false" xmlns:log4j='http://jakarta.apache.org/log4j/'> 

    <appender name="file" class="org.apache.log4j.RollingFileAppender"> 
     <param name="append" value="false" /> 
     <param name="maxFileSize" value="500MB" /> 
     <param name="maxBackupIndex" value="5" /> 
     <param name="file" value="test.log" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
     </layout> 
    </appender> 

    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="file" /> 
    </root> 

</log4j:configuration> 

我身邊有一派,我不能找到一個類似的案例給我的人。

我曾嘗試使用以下行重定向,但我寧願log4j的重定向它所以一切都是在同一個文件

File file = new File("error.log"); 
FileOutputStream fos = new FileOutputStream(file); 
PrintStream ps = new PrintStream(fos); 
System.setErr(ps); 

我不能它與JBoss或Tomcat設置重定向,因爲我不使用一個容器。它是直接在CMD線上的JAR。

注意:我希望STDOUT仍然轉到CMD窗口,因爲這是用戶的菜單系統。

回答

1

我發現這個問題在這裏,接受的答案是一個我需要的: log4j redirect stdout to DailyRollingFileAppender

原來我試圖找出一種方法來解決它在XML配置時,在現實中,我會一直努力通過將stdErr重定向到System.setErr()來修復代碼。

相關問題