Log4j only logs messages from a specific class in a file

In an external file, I would like to write the output of my com.foo.test class to a specific file, but it is added to the console log, as well as to the file log. Below is my xml configuration,

<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="File" value="${jboss.server.log.dir}/server.log"/> <param name="Append" value="false"/> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> </layout> </appender> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="Target" value="System.out"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/> </layout> </appender> <appender name="MYTESTAPPENDER" class="org.jboss.logging.appender.RollingFileAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="File" value="${jboss.server.home.dir}/log/mytest.log"/> <param name="Append" value="false"/> <param name="MaxFileSize" value="3MB"/> <param name="MaxBackupIndex" value="3"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> </layout> </appender> <logger name="testsplitlogger" additivity="false"> <level value="info"/> <appender-ref ref="MYTESTAPPENDER"/> </logger> <root> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> <appender-ref ref="MYTESTAPPENDER"/> </root> 

And my java code,

 private static final Logger logger = Logger.getLogger("testsplitlogger"); 

Update: The problem is that it writes all the console output and other applications for output to the mytest.log file, instead I want to add only informational messages from my testplitlogger for a specific class and other logs from the console, and the file should be written on server.log.

Am I doing something wrong?

+4
source share
3 answers

See the configuration of <root> xml. You allow logging for all three different files.

  • CONSOLE (system.out)
  • FILE (in this case server.log) and
  • MYTESTAPPENDER (mytest.log)

According to your requirements, you need to determine how to do this.

 <root> <priority value="info"/> <!--<appender-ref ref="CONSOLE"/>--> <!--<appender-ref ref="FILE"/>--> <appender-ref ref="MYTESTAPPENDER"/> </root> 
0
source

EDIT: It seems you updated the question since I last posted ... So my next suggestion has already taken care of you.

The test log should also contain the appender link.

 <logger name="testsplitlogger" additivity="false"> <level value="info" /> <appender-ref ref="MYTESTAPPENDER" /> </logger> 

Here is a nice link you can link to http://wiki.apache.org/logging-log4j/Log4jXmlFormat

0
source

You need to create a Category for this:

 <category name="my.company.package" additivity="false"> <priority value="info" /> <appender-ref ref="MYTESTAPPENDER" /> </category> 
0
source

All Articles