简体   繁体   中英

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...

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 .

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM