Show request header informations in Jetty inside SpringBoot - spring

Does anyone have an information on how to enable request header logging (log4j2 configured over xml) inside Jetty in Spring Boot?
This didnt work:
<Logger name="org.eclipse.jetty.server.Server" level="TRACE" additivity="false">
<appender-ref ref="SyslogInfoLogFile" />
</Logger>

Related

Spring boot - how to reduce log output from specific library?

I am using the library net.iakovlev.timeshape.TimeZoneEngine and it is spewing a lot of [DEBUG] messages on startup which seems to be the default behaviour.
In application.yml I should be able to control logging level with but that's not working somehow.
logging:
level:
net.iakovlev.timeshape: ERROR
Isn't this the correct way to do so?
Set your log configuration file, and add something like this :
...
<logger name="net.iakovlev.timeshape" level ="ERROR" additivity="false">
<!-- YOUR APPENDER -->
<appender-ref ref="CONSOLE" />
</logger>
...

Log messages in Logstash JSON format from ActiveMQ

I am running an ActiveMQ broker in a RedHat OpenShift cluster, with an EFK (ElasticSearch, Fluentd, Kibana) stack handling logging. In my java components I have configured my loggers to log in JSON format using the LogStash encoder so that they can be properly parsed, stored and displayed in Kibana and I'm looking to do the same for ActiveMQ.
In my Java components my logging configuration looks like and I expected to be able to do something similar for ActiveMQ:
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<logger name="jsonLogger" additivity="false" level="INFO">
<appender-ref ref="CONSOLE" />
</logger>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
The ActiveMQ docs don't seem to mention any way of changing the logging appender: http://activemq.apache.org/how-do-i-change-the-logging.html
Has anyone managed to do this successfully before?

Spring Profile not available in Logback when run via Maven

I've set up logback.xml to select which appender to use based on the active Spring profile. The technique works perfectly when I run the app using
java -jar -Dspring.profiles.active=local path/to/target/application.war
but not when I run it using the Spring Boot Maven Plugin, e.g.
mvn spring-boot:run -Drun.profiles=local
Here's the relevant section of the logback.xml
<root level="INFO">
<if condition='"${spring.profiles.active}".contains("local")'>
<then>
<appender-ref ref="CONSOLE"/>
</then>
<else>
<appender-ref ref="FILE"/>
</else>
</if>
</root>
I will note that the profile does show up correctly in the application itself, just isn't available when processing logback.xml.
The problem also manifests when running from the IntelliJ IDE.
Is there another way to use the Maven Spring Boot Plugin to cause the profile to be visible to the logback.xml parser, and would it work for IntelliJ, as well?
Have you tried to configure logback through logback-spring extension?
In your case logback-spring.xml could look like this:
<?xml version="1.0" encoding="UTF-8"?>
<include resource="org/springframework/boot/logging/logback/base.xml"/><!-- include this config if you want to use spring-boot's built-in appenders -->
<configuration>
<root level="INFO">
<springProfile name="local">
<appender-ref ref="CONSOLE"/>
</springProfile>
<springProfile name="otherprofile">
<appender-ref ref="FILE"/>
</springProfile>
</root>
</configuration>
More information about available options in logback-spring extensions:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-logback-extensions

Possible: Override logback logging level with environment variables

I currently have the following logger defined in my logback.xml:
<logger name="Event" level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
Is it possible to override the level here using an environment variable? I am using SpringBoot.
I have tried having these defined as ENV variables:
LOGGING_LEVEL_ROOT=ERROR
LOGGING_LEVEL_EVENT=ERROR
LOGGER_LEVEL_EVENT=ERROR
However none of these worked.
Spring Boot supports springProfile extension for the logback configuration file:
<springProfile name="test"> </springProfile>
Documentation
Also there is another way to do it using LoggingApplicationContextInitializer.

how to configure specific package in log4j.properties

I need to have log4j configuration for specific classes. Does anyone know how can we do it with log4j.properties.
As against, we can add logger with class/package in log4j.xml
<logger name="org.springframework.security">
<level value="info" />
<appender-ref ref="console" />
</logger>
I want equivalent configuration in log4j.properties?
The pattern is log4j.logger.<class or package name>=<level>[, appender]
log4j.logger.org.springframework.security=INFO
log4j.logger.org.springframework.security=INFO, console

Resources