gpt4 book ai didi

java - 如何使用 Apache Chainsaw 打开 log4j2 日志

转载 作者:行者123 更新时间:2023-11-30 10:25:43 25 4
gpt4 key购买 nike

我很难用 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>

这是 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 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 配置 - 您需要使用 %m 而不是 %msg 作为用于生成 output.log 的 PatternLayout

        <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 中的最新版本),并启动了您的应用。

启动您的应用后,我选择了 Chainsaw 的“连接到,log4j2chainsawappender”,然后会出现一个新选项卡并正确格式化您的日志事件、将“Start”解析为您的记录器、正确的严重性级别等。

关于java - 如何使用 Apache Chainsaw 打开 log4j2 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com