Java 如何使用Apache链锯打开log4j2日志

Java 如何使用Apache链锯打开log4j2日志,java,logging,log4j,log4j2,apache-chainsaw,Java,Logging,Log4j,Log4j2,Apache Chainsaw,我很难用Apache Chainsaw v2打开日志。 我无法使用zeroconf成功打开日志,也无法使用默认的xmllayout。在.net中,它对我来说就像一种魅力。但在Java中,这是一场噩梦 主要类别: import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Start { public static Logger logger = Lo

我很难用Apache Chainsaw v2打开日志。 我无法使用zeroconf成功打开日志,也无法使用默认的xmllayout。在.net中,它对我来说就像一种魅力。但在Java中,这是一场噩梦

主要类别:

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>


如果您能提出不同的方法来提高日志的可读性,我将非常感谢您的帮助。Apache chainsaw似乎不是一个实时项目,我不确定使用它是否是一个好主意。

您应该使用一个不会启动并立即退出的应用程序进行测试,否则它将没有时间发布消息并让chainsaw接收事件

我刚刚在Start.java文件中添加了以下内容:

import java.util.Scanner;
...
    public static void main(String[]args){
        Scanner in = new Scanner(System.in);
        int i = in.nextInt();
我还更新了log4j配置-对于用于生成output.log的PatternLayout,您需要使用%m而不是%msg

        <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"/>

然后我启动了ChainsawV2(git的最新版本),并启动了你的应用程序

启动应用程序后,我选择了Chainsaw的“连接到,log4j2chainsawappender”,出现了一个新选项卡,并正确设置了日志事件的格式,将“开始”解析为日志记录器,正确的严重性级别等

        <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"/>