8

Is it possible to have "debug" and "info" output written to the console while the "info" output is only written to some log file? For example, given this logging:

LOG.debug(fileContent);
LOG.info(fileLength);

What does a corresponding log4j.xml look like?

Kara
  • 6,115
  • 16
  • 50
  • 57

5 Answers5

11

Ok, I've got it now:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        ...
    </appender>

    <appender name="otherAppender"
              class="org.apache.log4j.FileAppender FileAppender">
       <param name="Threshold" value="INFO"/>
        ...
    </appender>

    <root>
        <priority     value="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="otherAppender" />
    </root>
</log4j:configuration>

Thanks for your help!

5

That is definitely possible. The configuration would look something like this (not checked for syntactic correctness):

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        ...
    </appender>

    <appender name="otherAppender"
              class="org.apache.log4j.FileAppender FileAppender">
        ...
    </appender>

    <logger name="com.mycompany.mypackage.MyClass">
        <level        value="info"/>
        <appender-ref ref="otherAppender" />
    </logger>

    <root>
        <priority     value="debug" />
        <appender-ref ref="console" />
    </root>
</log4j:configuration>

All debug and info messages go to the console appender. Info messages go to otherAppender.

Eddie
  • 53,828
  • 22
  • 125
  • 145
Ronald Wildenberg
  • 31,634
  • 14
  • 90
  • 133
1

Go to this page for some examples.

It's as simple as adding two different appenders to your program, one appender for each type of logging you want to do.

DevinB
  • 8,231
  • 9
  • 44
  • 54
0

With the configuration from Eddie I can only get the "info" output for MyClass. But what I would like to have is that the "info" output of MyClass goes to a file AND the "debug" output of MyClass goes to console.

0

Do as rwwilden suggested but remove this part:

<logger name="com.mycompany.mypackage.MyClass">
    <level value="info"/>
    <appender-ref ref="otherAppender" />
</logger>

And add <param name="Threshold" value="INFO"/> under the otherAppender.

hopper
  • 13,060
  • 7
  • 49
  • 53
Bhushan Bhangale
  • 10,921
  • 5
  • 43
  • 71