Reputation: 254
I am building spring boot application version 2.0.2.RELEASE
with BOM Finchley.RC2
and trying to write logs to file in using log4j2.xml
. The problem is i want to log only my application messages like:
log.error("this is error");
log.info("this is info");
but the log file is showing other logs as well like Spring logs etc as below:
29-08-2018 18:01:45,023 [INFO ] [] [main] - this is info
29-08-2018 18:01:45,492 [INFO ] [] [main] - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@b4711e2: startup date [Wed Aug 29 18:01:45 PKT 2018]; root of context hierarchy
29-08-2018 18:01:45,659 [INFO ] [] [main] - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
29-08-2018 18:01:45,687 [INFO ] [] [main] - Bean 'configurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$af5d2aa2] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
How I can customize my log4j2.xml
to acheive only my application logging for info/debug/error logs.
Below is my log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<RollingFile name="FileAppender" fileName="mylogFile.log"
append="true" filePattern="log-%d{MM-dd-yyyy}-%i.log">
<PatternLayout>
<pattern>%d{dd-MM-yyyy HH:mm:ss,SSS} [%-5p] [%X{X-B3-TraceId}] [%t] - %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{dd-MM-yyyy HH:mm:ss,SSS} [%-5p] [%X{X-B3-TraceId}] [%t] - %m%n"/>
</Console>
<File name="JSONAppender" fileName="\\tmp\\logFile.json.log" append="true">
<JSONLayout complete="true" charset="UTF-8" compact="true" eventEol="true"/>
</File>
</Appenders>
<Loggers>
<Logger name="org.apache.logging.log4j.core.config.xml" level="info" >
<AppenderRef ref="FileAppender"/>
</Logger>
<Logger name="guru.springframework.blog.log4j2json" level="debug">
<AppenderRef ref="JSONAppender"/>
</Logger>
<Root level="info">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="FileAppender"/>
<AppenderRef ref="JSONAppender"/>
</Root>
</Loggers>
</Configuration>`
Any help please what is wrong with my configration?
With Spring 1.5.9 version
it was working fine but as i upgrade to 2.0.2.RELEASE
logging to file not working.
Upvotes: 1
Views: 2617
Reputation: 2572
In order to avoid INFO
from external libraries you need to adjust the root log level from INFO
to WARN
or ERROR
.
In addition you have to create an explicit logger for the packages/classes you want to write log messages from.
<Logger name="com.my.app" level="info">
<AppenderRef="STDOUT" />
..
</Logger>
I would also recommend that you add the logger (%c
) to the log pattern.
Upvotes: 1