gpt4 book ai didi

java - 如何配置 log4j2 Web 应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:53 26 4
gpt4 key购买 nike

我对 Web 应用程序不太陌生,最近我需要采用日志记录机制,为此我选择了 Log4J2,我浏览了那里的指南,并下载了所需的库。到目前为止,这就是我所做的。

1. Added following jars to web-inf/lib
-- log4j-core2.1.jar
-- log4j-api-2.1.jar
-- log4j-web-2.1.jar


2. Added below xml as, log4j2.xml in java/src directory

<?xml version="1.0" encoding="UTF-8"?>
<configuration name="NONPROD" status="OFF">


<Properties>

<Property name="log-path">logs</Property>
</Properties>


<Appenders>

<Console name="console-log" target="SYSTEM_OUT">
<!-- <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n -->
<!-- </pattern> -->

<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>


<RollingFile name="info-log" fileName="${log-path}/web-info.log"
filePattern="${log-path}/web-info-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />

<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
</RollingFile>

<RollingFile name="error-log" fileName="${log-path}/web-error.log"
filePattern="${log-path}/web-error-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />

<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
</RollingFile>


<RollingFile name="debug-log" fileName="${log-path}/web-debug.log"
filePattern="${log-path}/web-debug-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />

<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
</RollingFile>



<RollingFile name="trace-log" fileName="${log-path}/web-trace.log"
filePattern="${log-path}/web-trace-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />

<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
</RollingFile>

</Appenders>

<Loggers>

<Logger name="com.demo.web.log4j2.file" level="debug"
additivity="false">

<appender-ref ref="trace-log" level="trace" />

<appender-ref ref="error-log" level="error" />

<appender-ref ref="debug-log" level="debug" />

<appender-ref ref="info-log" level="info" />
</Logger>

<Logger name="com.demo.web.log4j2.console" level="all"
additivity="false">
<AppenderRef ref="console-log" />
</Logger>


<Root level="info" additivity="true">

<AppenderRef ref="console-log" />

</Root>

</Loggers>


</configuration>

3. third and last i wrote an small web service to test logging

@Path("/register")
public class Register {

private DataManager mManager;
private static final Logger LOG = LogManager.getLogger(Register.class);

public Register(){
mManager = DataManager.getInstance();
}


@GET
@Path("/{param}")
public Response getMsg(@PathParam("param") String msg) {

LOG.error("Not supported operations");
return Response.status(Response.Status.BAD_REQUEST)
.entity("Not supported").build();

}

但是在控制台中,在触发获取请求时,这就是我打印的全部内容。

INFO: Server startup in 35959 ms
Not supported operations // this is not in pattern i supplied in log4j2.xml

// this is my pattern
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />

我发现这可能是由于出现了一些问题,并且正在努力寻找真正的原因,因为我对网络编程完全陌生,请帮助我配置我的记录器。

谢谢,技术拳头

最佳答案

您的 servlet 容器正在使用其他一些日志框架来记录到控制台。找出哪个日志框架并使用 log4j2 的桥接库之一将输出重定向到您的 log4j2 设置。

关于java - 如何配置 log4j2 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28349008/

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