写了一个类生成日志文件
import org.apache.log4j.*;
import java.io.IOException;public class COProxyLog     //系统运行日志。
{
 private static Category m_Log = null;
    public void InitOProxyLog(){
        try{
            m_Log = Category.getInstance( cLogFIleName );
            RollingFileAppender appender = new RollingFileAppender( new PatternLayout("%d{yyyy-MM-dd HH:mm:ss} :: %5p :: %m%n") ,"online.log" , true );    
            
            appender.setMaxBackupIndex( 1000 );
            appender.setMaxFileSize( 102400KB);
            
            m_Log.addAppender( appender );
            //%5p - %m%n
            ConsoleAppender capp = new ConsoleAppender( new PatternLayout( "%5p - %m%n" ) );
            m_Log.addAppender( capp );
            m_Log.setLevel( cLevel );
        } catch ( IOException e ){
        }
    }
}可以生成日志,可以只有一个日志文件(online.log),如何可以完成这样的功能:即按每天的日期生成当天的日志文件?

解决方案 »

  1.   

    log4j的配置文件加上
    org.apache.log4j.DailyRollingFileAppender
    如 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
    如果加上了 org.apache.log4j.DailyRollingFileAppender 那就要把MaxFileSize的设置项去掉
    MaxBackupIndex设置项是否也要去掉,记不清了,感觉不用去,毕竟需要有一个总数限制
      

  2.   

    log4j.properties配置如下
    log4j.rootLogger=DEBUG,R
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.R.File=comm.log
    log4j.appender.R.MaxBackupIndex=100
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
      

  3.   

    log4j.category.com.hhcn.newland.videoplay.device.TestHH8060=INFO,A4
    log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A4.DatePattern='.'yyyy-MM-dd
    log4j.appender.A4.File=debugLog/testHH8060.log
    log4j.appender.A4.layout=org.apache.log4j.PatternLayout
    log4j.appender.A4.layout.ConversionPattern=%-4r %3x - %m%n
    log4j.threshold=INFO
    这样的配置log4j.properties文件就能生成你要的每日日志文件,如上例先在debugLog目录下生成testHH8060.log文件,然后再生成代有日期的日志文件.
      

  4.   

    谢谢各位的回答,但是我想知道的是。我原先的方法为:
        public void InitOProxyLog(){
            try{
                m_Log = Category.getInstance( cLogFIleName );
                RollingFileAppender appender = new RollingFileAppender( new PatternLayout("%d{yyyy-MM-dd HH:mm:ss} :: %5p :: %m%n") ,"online.log" , true );    
                
                appender.setMaxBackupIndex( 1000 );
                appender.setMaxFileSize( 102400KB);
                
                m_Log.addAppender( appender );
                //%5p - %m%n
                ConsoleAppender capp = new ConsoleAppender( new PatternLayout( "%5p - %m%n" ) );
                m_Log.addAppender( capp );
    ///////////////我想在这里加入
    log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A4.DatePattern='.'yyyy-MM-dd
    log4j.appender.A4.layout=org.apache.log4j.PatternLayout
    这些参数可以吗?加入后是否就可以每天生成相应的日志文件?????            m_Log.setLevel( cLevel );
            } catch ( IOException e ){
            }
        }
      

  5.   

    参数是加在log4j.properties这个配置文件里面的
    不是加在你的java程序里面
      

  6.   

    package proxy.Log;import org.apache.log4j.*;
    public class COProxyLog     //系统运行日志。
    {
        public void InitOProxyLog(){
         m_Log = Logger.getLogger(COProxyLog.class);
    }
     private static  Category m_Log = null;
    }
    运行后出现错误
    log4j:WARN No appenders could be found for logger (proxy.Log.COProxyLog).log4j:WARN Please initialize the log4j system properly.
    为什么???
    如果我把m_Log 定义为Logger类型的,可是在写日志的时候,
    比如这句:        try {
               ......... 
            } catch (IOException e) {
                m_Log .info("COProxyServer::COProxyServer()--catch1:"+ this.getClass().getName() , e.getClass().getName() , e.getMessage());
    /////这里会提示出错,只有将m_Log 定义Category 才行.
                e.printStackTrace();
            }
      

  7.   

    下面是用你的程序改的:import org.apache.log4j.*;
    import java.io.IOException;public class COProxyLog // 系统运行日志。
    {
        private static Category m_Log = null;    public void InitOProxyLog() {
            try {
                m_Log = Category.getInstance(cLogFIleName);
                DailyRollingFileAppender appender = new DailyRollingFileAppender(
                        new PatternLayout("%d{yyyy-MM-dd HH:mm:ss} :: %5p :: %m%n"),
                        "online.log", ".yyyy-MM-dd");            //appender.setMaxBackupIndex(1000);
                //appender.setMaxFileSize("102400KB");            m_Log.addAppender(appender);
                // %5p - %m%n
                ConsoleAppender capp = new ConsoleAppender(new PatternLayout("%5p - %m%n"));
                m_Log.addAppender(capp);
                m_Log.setLevel(cLevel);
            } catch (IOException e) {
            }
        }
    }
      

  8.   

    TO maquan('ma:kju):
      高手就是高手,一句话就解决了。万分感谢。