假如在配置文件中appender设置为文件,那个文件名已经在配置文件中固定了,那么在使用时怎么才能在不同的代码中输出为不同的日志文件呢?多谢!

解决方案 »

  1.   

    # Set root logger level to ERROR and its only appender to R.
    log4j.rootLogger = INFO,R# R is set to be a DailyRollingFileAppender.
    log4j.appender.R = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.File = Application.log
    log4j.appender.R.DatePattern = yyyy-MM-dd'.log'
    log4j.appender.R.layout = org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
      

  2.   

    对于你的 “在使用时怎么才能在不同的代码中输出为不同的日志文件呢?”不是很理解。如果想输出到不同的日志文件,可以多定义几个Appender啊。或者是多定义几个logger,用不同的logger来控制输出到不同的日志文件中去啊。
      

  3.   

    “log4j.appender.R.File = Application.log
    log4j.appender.R.DatePattern = yyyy-MM-dd'.log'”
    这个的意思是不是用时间做为文件名呢?
    我的意思就是比如说我的程序里有好多类,我想每个类都有自己的日志文件,那怎么办呢?能动态生成吗?也不能写那么多appender啊?
      

  4.   

    这样的话你干脆不要用配置文件了,我也遇到过类似的问题,是这样的,我程序中起了n个线程,要求每个线程的日志都要写到单独的文件中,我没有找到在配置文件中动态配置的方法,只能是没起一个线程就给该线程生成一个logger,然后在线程中给logger设置Appender。我觉得你也只能给我一样处理,每个类生成一个logger啊,然后在类中设置Appender。
      

  5.   

    哦,这样啊,那如果采用tomcat和log4j如果用配置文件好像又要写servelet-Log4jInit.java,还要改web.xml,还要写配置文件什么的,如果不用配置文件了,还用写那些东西吗,直接在jsp里就可以用吗