在同一个JVM下,如果在一个对象或模块中,要求不同类的log信息(如数据库操作类log,TCP通信log)分别写到不同的log文件。如果用log4j,应该怎么解决

解决方案 »

  1.   

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="errorLog" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="${heating.root}/WEB-INFO/log/error.log" />
    <param name="Append" value="true" />
    <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" />    
    </layout>   
    <level value="error" />
    </appender>
    <appender name="infoLog" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="${heating.root}/WEB-INFO/log/info.log" />
    <param name="Append" value="true" />
    <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" />    
    </layout>   
    <level value="info" />
    </appender> 
    <appender name="systemServiceLog" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="${heating.root}/WEB-INFO/SystemLog/systemLog.log" />
    <param name="Append" value="true" />
    <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" />    
    </layout>   
    <level value="info" />
    </appender> 
    <logger name="infoLogger" additivity="false">
    <priority value ="info"/> 
    <appender-ref ref="infoLog" />
    </logger>

    <logger name="errorLogger" additivity="false">
    <priority value ="error"/> 
    <appender-ref ref="errorLog" />
    </logger>

    <root>
    <appender-ref ref="systemServiceLog" />
    </root>
    </log4j:configuration>
    /**
     * @see Log4j方法
     * @author hj<[email protected]>
     *
     */
    public class MyLogger {

    public static Logger getLoggerByName(String loggerName) {
    return Logger.getLogger(loggerName);
    }
    }