0

Use JBoss 7 , Java 6.

My log4j.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!-- general application log -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
      <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>

<!-- additional logging -->
 <appender name="util" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="${user.home}/bs/logs/login.log"/>
        <param name="MaxFileSize" value="100KB"/>
        <param name="MaxBackupIndex" value="100"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{HH:mm:ss} %m%n"/>
        </layout>          
     </appender>

     <logger name="ru.bs.web" additivity="false">
        <appender-ref ref="console"/>
    </logger>

    <logger name="ru.bs.web.security">
        <appender-ref ref="util"/>
    </logger>

    <root>
        <level value="INFO"/>
    </root>

</log4j:configuration>

Problem :

I want make via log4j logging all application from ru.bs.web package use console appender, and logging from ru.bs.web.security in file.


How to exclude package ru.bs.web.security from console appender ?

I'm use config from How do I configure log4j using log4j.xml to append to different log files based on class name? but it dont work.

I SOLVED!

My XML config is here :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/">

     <!-- general application log -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <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="file" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="${user.home}/bs/logs/login.log"/>
        <param name="MaxFileSize" value="100MB"/>
        <param name="MaxBackupIndex" value="10000"/>        
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{HH:mm:ss} %m%n"/>
        </layout>
    </appender>

    <logger name="ru.bs.web.security" additivity="false">
        <level value="LOGIN" class="ru.bs.web.util.LoginLevel"/>
        <appender-ref ref="file"/>
    </logger>


    <root>
        <level value="info"/>
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>

</log4j:configuration>

and ru.bs.web.util.LoginLevel class :

public class LoginLevel extends Level {

    private static final long serialVersionUID = 1L;

    public static final int LOGIN_INT = INFO_INT + 100 ;
    public static final Level LOGIN = new LoginLevel(LOGIN_INT,"LOGIN",6);

    protected LoginLevel(int level, String levelStr, int syslogEquivalent) {
        super(level, levelStr, syslogEquivalent);
    }

}

run it with - log.log(LoginLevel.LOGIN, "from LOGGER!");

Community
  • 1
  • 1
Benjamin
  • 531
  • 2
  • 6
  • 18
  • "it doesn't work": what happens ? Show us the code. – philant Feb 28 '13 at 07:14
  • in ru.bs.web.security package i have class that listen login in app and then (after login) i write log in file via log.info("test") but file is empty. – Benjamin Feb 28 '13 at 07:26

0 Answers0