2017-09-03 292 views
0

我很難用Apache Chainsaw v2打開我的日誌。 我無法用zeroconf成功打開我的日誌,既沒有使用默認的xmllayout。它在.net中對我來說就像一個魅力。但在Java中這是一場噩夢。如何用Apache Chainsaw打開log4j2日誌

主要類:

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 


public class Start { 

    public static Logger logger = LogManager.getLogger(Start.class); 

    public static void main(String[]args){ 
     logger.info("Example log info"); 
     logger.trace("Example log trace"); 
     logger.debug("Example log debug"); 
     logger.error("Example log error"); 
     logger.fatal("Example log fatal"); 
     logger.warn("Example log warn"); 
     return; 
    } 
} 

Log4j2配置

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="ALL" advertiser="multicastdns"> 
    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="custom layout %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </Console> 
     <File name="log4j2Chainsaw" fileName="output.log" bufferedIO="false" advertiseURI="file:///C:/Users/gswiec/IdeaProjects/Log4j2ChainsawExample/output.log" advertise="true"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </File> 
     <File name="xmlLayoutForChainsaw" fileName="output.xml" bufferedIO="false" > 
      <XmlLayout/> 
     </File> 
    </Appenders> 
    <Loggers> 
     <Root level="trace"> 
      <AppenderRef ref="Console"/> 
      <AppenderRef ref="log4j2Chainsaw"/> 
      <AppenderRef ref="xmlLayoutForChainsaw"/> 
     </Root> 
    </Loggers> 
</Configuration> 

這裏是POM,所有需要的依賴似乎是在那裏。

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>swiec.eu</groupId> 
    <artifactId>Log4j2ChainsawExample</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 
     <!--Log4j2 and apache chainsaw zeroconf dependencies--> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-core</artifactId> 
      <version>2.9.0</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.jmdns</groupId> 
      <artifactId>jmdns</artifactId> 
      <version>3.4.1</version> 
     </dependency> 

     <!--XmlLayout dependencies--> 
     <dependency> 
      <groupId>com.fasterxml.woodstox</groupId> 
      <artifactId>woodstox-core</artifactId> 
      <version>5.0.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <version>2.9.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.9.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.dataformat</groupId> 
      <artifactId>jackson-dataformat-xml</artifactId> 
      <version>2.9.0</version> 
     </dependency> 
    </dependencies> 

</project> 

所有示例項目,請https://github.com/swiec/eu.swiec.log4j2apacheexample

我會感謝您的幫助,如果你還建議不同的方法來獲取日誌的可讀性。 Apache鏈鋸似乎不是活的項目,我不確定使用它的好主意。

回答

0

您應該測試一個不啓動並立即退出的應用程序,否則它將沒有時間通知&有電鋸接收事件。

我只是說給你的Start.java文件:

import java.util.Scanner; 
... 
    public static void main(String[]args){ 
     Scanner in = new Scanner(System.in); 
     int i = in.nextInt(); 

我也更新了你的log4j的配置 - 你需要使用%M%不味精的的PatternLayout用於生成output.log

 <File name="log4j2chainsawappender" fileName="output.log" bufferedIO="false" advertiseURI="file://Users/scott/eu.swiec.log4j2apacheexample/output.log" advertise="true"> 
     <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m"/> 

然後我開始Chainsaw v2(git中的最新版本),並開始你的應用程序。

一旦程序開始,我選擇了電鋸的「連接,log4j2chainsawappender」,和一個新的標籤出現和格式正確無誤你的日誌事件,解析「開始」爲您記錄,正確的嚴重程度等