Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Log4j2: no log4j-web module available

Tags:

java

log4j

log4j2

I am trying to set the status level of my config to "info", but I am getting the following output:

INFO Log4j appears to be running in a Servlet environment, but there's no log4j-web module available. If you want better web container support, please add the log4j-web JAR to your web archive or server lib directory.

My log4j2.xml has the following

    <?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" packages="org.graylog2.log4j2">
    <Properties>
        <Property name="default_pattern">%d{MM/dd/yyyy hh:mm:ss} %5p %c{1} - %m%n</Property>
    </Properties>

    <!--  LOG4J2 APPENDERS -->
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="${default_pattern}"/>
        </Console>
        <Console name="com.sum.exam" target="SYSTEM_OUT">
            <PatternLayout pattern="${default_pattern}"/>                            
        </Console>
        <Console name="auth" target="SYSTEM_OUT">
            <PatternLayout pattern="${default_pattern}"/>                            
        </Console>
        <Console name="com.d.e" target="SYSTEM_OUT">
            <PatternLayout pattern="${default_pattern}"/>                            
        </Console>
        <Console name="com.google.gson" target="SYSTEM_OUT">
            <PatternLayout pattern="${default_pattern}"/>                            
        </Console>
        <Console name="org.elasticsearch" target="SYSTEM_OUT">
            <PatternLayout pattern="${default_pattern}"/>                            
        </Console>
        <Console name="com.datamotion.direct" target="SYSTEM_OUT">
            <PatternLayout pattern="${default_pattern}"/>                            
        </Console>
        <NullAppender name="null">
            <PatternLayout pattern="${default_pattern}"/> 
        </NullAppender>

        <!-- GELFJ CONFIGURATION -->
        <GELF   name="gelfAppender" 
                server="org.graylog2.log.GelfAppender" 
                port="12201"
                hostName="logs.x.d.com" 
                facility="GELF-JAVA"
                additionalFields="{'\u2018environment\u2019\': '\u2018EHR\u2019'}"
                extractStacktrace="true"
                addExtendedInformation="true">
            <PatternLayout pattern="${default_pattern}"/>
            <Root level="info">
                <AppenderRef ref="gelfAppender" level="info"/>
            </Root>
        </GELF>
    </Appenders>

    <!-- LOG4J2 CONFIGURATION -->
    <Loggers>
        <Root level="error" additivity="false" />

        <Logger name="console" level="info">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="com.sum.exam" level="debug" additivity="false">
            <AppenderRef ref="com.sum.exam" />
        </Logger>
        <Logger name="auth" level="debug" additivity="false">
            <AppenderRef ref="auth" />
        </Logger>
        <Logger name="com.d.e" level="debug" additivity="false">
            <AppenderRef ref="com.d.e" />
        </Logger>
        <Logger name="com.google.gson" level="info">
            <AppenderRef ref="com.google.gson" />
        </Logger>
        <Logger name="org.elasticsearch" level="info">
            <AppenderRef ref="org.elasticsearch" />
        </Logger>
        <Logger name="com.datamotion.direct" level="debug" additivity="false">
            <AppenderRef ref="com.datamotion.direct" />
        </Logger>
    </Loggers>

</Configuration>

I have downloaded the log4j-web-2.6.2.jar file and added it to my class path, but I still get the same output for some reason. What could I be doing wrong? I am able to output DEBUG status levels, but not INFO which is odd.

like image 579
mr nooby noob Avatar asked Sep 09 '16 21:09

mr nooby noob


2 Answers

At first, I thought the problem was because I have servlet-api jar in my classpath, which I need, but removing that did not fix the problem, for me. In the end, all I had to do was just add the log4 web jar file from mvnrepository to your classpath and you're set!

like image 168
mr nooby noob Avatar answered Nov 13 '22 08:11

mr nooby noob


The status="info" at the beginning of the configuration file is for internal log4j2 debug messages. If you set it to trace you will see details on how log4j2 is configured.

That has nothing to do with your application logging though. You say you are able to output debug messages, I assume that mean that the logging itself works as expected (If there's a problem there then please show your full configuration. )

like image 20
Remko Popma Avatar answered Nov 13 '22 08:11

Remko Popma