Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Enable debug logging for Log4J2 + Apache HttpClient

im trying to activate the debug logging for my Apache HttpClient but cant make it work (getting no logging output at all which is HttpClient related).

This is my log4j2 configuration im using at the moment:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
    <appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
        </Console>

        <RollingFile name="RollingRandomAccessFile" fileName="logs/test.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>
                    %d %p %c{1.} [%t] %m%n
                </Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>

        <Async name="async">
            <AppenderRef ref="RollingRandomAccessFile" />
        </Async>
    </appenders>
    <loggers>
        <logger name="org.apache.http.wire" level="debug" />
        <logger name="org.apache.http.client" level="debug" />
        <logger name="org.apache.xerces.parsers.SAXParser" level="warn" />
        <logger name="org.hibernate" level="warn" />
        <root level="trace">
            <appender-ref ref="console" />
            <appender-ref ref="async" />
        </root>
    </loggers>
</configuration>

Changing the level from warn to debug for hibernate works perfectly for example.

These libs im using:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>fluent-hc</artifactId>
    <version>4.2.6</version>
    </dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.2.6</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.2.5</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient-cache</artifactId>
    <version>4.2.6</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>4.2.6</version>
</dependency>

Log4J2

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.0-beta9</version>
</dependency>

Does anybody have a idea? I tried already different package names like

httpclient.wire
httpclient.wire.header
httpclient.wire.content

and some more but nothing seems to work...

like image 639
StephanM Avatar asked Feb 04 '14 13:02

StephanM


2 Answers

I am assuming that httpcomponents use log4j-1.2 internally. Log4j2 provides an adapter that routes calls from your application that use the 1.2 API to the new 2.0 implementation.

To enable this, you only need to add log4j-core and log4j-1.2-api jars to your classpath. (Your current Maven dependencies only has log4j-api, which is the new 2.0 API.) See also http://logging.apache.org/log4j/2.x/faq.html .

like image 146
Remko Popma Avatar answered Sep 16 '22 13:09

Remko Popma


Remko is right that the issue is httpcomponents using log4j-1.2 internally. The adaptor that routes log4j 1.2 to log4j 2 is called the log4j 1.2 bridge and is described here: https://logging.apache.org/log4j/2.x/log4j-1.2-api/index.html.

The maven artifacts page for log4j explains exactly how to configure your maven dependencies to include the bridge library:

Log4j 1.x API Bridge

If existing components use Log4j 1.x and you want to have this logging routed to Log4j 2, then remove any log4j 1.x dependencies and add the following.

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.5</version>
  </dependency>
</dependencies>

From https://logging.apache.org/log4j/2.x/maven-artifacts.html

like image 24
sew Avatar answered Sep 18 '22 13:09

sew