gpt4 book ai didi

java - VertX 和 Log4j 无法获取配置

转载 作者:行者123 更新时间:2023-11-30 06:46:20 26 4
gpt4 key购买 nike

我正在使用 VertX,我想使用 Log4J 作为我的代码和外部库的记录器。

于是我记下了这段代码:

import org.apache.log4j.Logger;

public class Main extends AbstractVerticle {

final static Logger logger = Logger.getLogger("Gimli");

@Override
public void start(Future<Void> fut) throws Exception {
System.setProperty("vertx.logger-delegate-factory-class-name", " io.vertx.core.logging.Log4j2LogDelegateFactory"); // Default logger

logger.debug("Debug log");
logger.error("Error log");
logger.warn("Warning log");
}
}

然后我将文件 log4j.xml 放入 src/main/resources

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
<Appenders>
<RollingFile name="app_file" append="true" fileName="/var/log/seachlog.log" filePattern="/var/log/vertx/$${date:yyyy-MM}/seachlog-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{ISO8601} %-5p %c:%L - %m%n" />
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="5MB" />
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
<RollingFile name="vertx_file" append="true" fileName="/var/log/vertx.log" filePattern="/var/log/vertx/$${date:yyyy-MM}/vertx-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{ISO8601} %-5p %c:%L - %m%n" />
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="5MB" />
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
<Console name="STDOUT" target="SYSTEM_OUT">
<!-- <LogStashJSONLayout/> -->
<PatternLayout pattern="%d{ISO8601} %-5p %c:%L - sfsdfsdfsdfsdf %m%n" />
</Console>
</Appenders>

<Loggers>
<Logger name="Gimli" level="DEBUG">
<!-- <AppenderRef ref="vertx_rollingFile" /> -->
<!-- <AppenderRef ref="vertx_socket" /> -->
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="vertx_file" />
</Logger>
<Root level="DEBUG">
<!-- <AppenderRef ref="vertx_socket" /> -->
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="app_file" />
</Root>
</Loggers>

但输出似乎没有改变:

2017-12-09 09:21:34,503 DEBUG [vert.x-eventloop-thread-0] [Gimli] Debug log (Main.java:31)
2017-12-09 09:21:34,505 ERROR [vert.x-eventloop-thread-0] [Gimli] Error log (Main.java:32)
2017-12-09 09:21:34,507 WARN [vert.x-eventloop-thread-0] [Gimli] Warning log (Main.java:33)

如何正确设置配置文件?

最佳答案

首先,您似乎正在将 log4jlog4j2 配置文件组合在一起。这可能是您的配置未加载的原因。

但我建议使用 vert.x 日志功能——你也可以使用 log4j 或 log4j2。您将这样定义您的记录器:

import io.vertx.core.logging.Logger;
import io.vertx.core.logging.LoggerFactory;

Logger logger = LoggerFactory.getLogger("Gimli");

然后像你一样正常使用它。所以:

logger.debug("Debug log");
logger.error("Error log");
logger.warn("Warning log");

接下来,您会将配置保存在 src/main/resources 中。请小心,因为这是 log4j2 配置。所以它应该命名为log4j2.xml
现在你只需要为顶点指定记录器委托(delegate)工厂。对于 log4j 或 log4j2 其:

io.vertx.core.logging.Log4jLogDelegateFactory 

io.vertx.core.logging.Log4j2LogDelegateFactory

您可以设置系统属性 vertx.logger-delegate-factory-class-name 或者您可以指定 VM 参数如下:

-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.Log4j2LogDelegateFactory

(对于 log4j2)

更多信息在 documentation

关于java - VertX 和 Log4j 无法获取配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47726730/

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