兄弟,你这样写不对,
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=log/filename.log
启动tomcat 的时候,出现
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: \PSA\log\filename.log(系统找不到指定的路径
。)

解决方案 »

  1.   

    没办法,只有写全路径了,另外我的日志文件是这样配置的
    log4j.appender.R.File=C:/Program Files/Apache Tomcat 4.0/webapps/PSA/log/localhost_8080.log
    log4j.appender.R.Append = true
    log4j.appender.R.DatePattern='.'yyyy-MM-dd'.txt'
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d [%F:%L] - %m \r\n
    但是,运行后,并没有生成
    localhost_8080.log.2003-06-13.txt而是生成localhost_8080.log,要将时间修改到6月14日,才生成localhost_8080.log.2003-06-13.txt,即当天生成的日志文件是localhost_8080.log,
    如果我想当天生成localhost_8080.log.2003-06-13.txt,如何处理?
      

  2.   

    slam_yang(我是来学习的) 
    兄弟,不行呀
      

  3.   

    在tomcat目录下建一个log文件夹就可以了。
      

  4.   

    在配置文件中这样写:
       log4j.logger.debug=debug,debugFile
       log4j.logger.info=info,infoFile
       log4j.logger.error=error,errorFile
    logger后面的debug,info,error为标示符,在class文件中用到.
    log4j.appender.debugFile.File=C:/log/debugFile.log
    log4j.appender.debugFile.Append = true
    log4j.appender.debugFile.DatePattern='.'yyyy-MM-dd'.txt'
    log4j.appender.debugFile.layout=org.apache.log4j.PatternLayout
    log4j.appender.debugFile.layout.ConversionPattern=%d [%F:%L] - %m \r\n
    其它两个文件同样的配置.
    class类中如下:
    static Logger debugLog=new Logger.getLogger("debug")
    static Logger infoLog=new Logger.getLogger("info")
    static Logger errorLog=new Logger.getLogger("error")
    这样不同级别的log信息就可以打在不同的log文件中.
      

  5.   

    1、首先将log4j-1.2.8.jar包含入类路径中。
    2、Log4J必须在应用的其它代码执行前完成初始化。其初始化内容如下:
    import java.io.*;
    import javax.servlet.*;
    import org.apache.log4j.*;
    public class Log4JInit extends HttpServlet {
     public void init() throws ServletException {
      String prefix = getServletContext().getRealPath("/");
      String file = getServletConfig().getInitParameter("log4j-config-file");
      // 从Servlet参数读取log4j的配置文件 
      if (file != null) {
       PropertyConfigurator.configure(prefix + file);
      }
     }
     public void doGet(HttpServletRequest request,HttpServletResponse response)throws 
    IOException, ServletException {}
     public void doPost(HttpServletRequest request,HttpServletResponse response)throws 
    IOException, ServletException {}
    }3、web.xml内容配置如下:具体的文件放在 路径:\webapps\项目名称\WEB-INF\web.xml<?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app><servlet>
      <servlet-name>log4jinit</servlet-name> 
       <servlet-class>com.iss.common.util.Log4JInit</servlet-class>//这里换换成具体的初始化文件包   
       <init-param>
       <param-name>log4j-config-file</param-name> 
    <param-value>WEB-INF\log4j.properties</param-value> 
       </init-param>
       <load-on-startup>1</load-on-startup>
      </servlet><!-- Establish the default list of welcome files -->
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
      </welcome-file-list>
      <error-page>
        <error-code>404</error-code>
        <location>/FileNoFound.jsp</location>
      </error-page>  
    </web-app>
    注意:上面的load-on-startup应设为1,以便在Web容器启动时即装入该Servlet。log4j.properties文件放在根的properties子目录中,也可以把它放在其它目录中。应该把.properties文件集中存放,这样方便管理。
    4、log4j.properties的配置,具体的路径在\webapps\项目名称\WEB-INF\log4j.properties在配置文件中即log4j.properties中这样设置:
    #设置成根目录,所有包括debug以上级别的信息都打印出来到日志文件中
    log4j.rootLogger=debug, stdout 
    #设置为debug,表示只能打印出debug级别的信息
    log4j.logger.debug=debug, R
    #设置成info,表示只能打印出info级别的信息
    log4j.logger.info=info,s
    #设置成error,表示只能打印出error级别的信息
    log4j.logger.error = error,k
    #输出debug级别以上的信息到控制台
    og4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    # Pattern to output the caller's file name and line number.
    log4j.appender.stdout.layout.ConversionPattern=(%F:%L) - %m%d%n 
    打印debug级别的信息到debugInfo.log
    log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.R.File=c:/webapps/debugInfo.log
    log4j.appender.R.DatePattern='.'yyyy-MM-dd'.txt'
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d [%F:%L] - %m \r\n
    #打印info级别的信息到info.log
    log4j.appender.s=org.apache.log4j.RollingFileAppender
    log4j.appender.s.File= c:/webapps/info.log
    # Control the maximum log file size
    log4j.appender.s.MaxFileSize=100KB
    # Archive log files (one backup file here)
    log4j.appender.s.MaxBackupIndex=1
    log4j.appender.s.layout=org.apache.log4j.PatternLayout
    log4j.appender.s.layout.ConversionPattern=%p %t %c - %m%d%n 
    #打印error级别的信息到errorInfo.log中
    log4j.appender.k=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.k.File=C:/Program Files/Apache Tomcat 4.0/webapps/PSA/log/error_8080.log
    //log4j.appender.R.Append = true
    log4j.appender.k.DatePattern='.'yyyy-MM-dd'.txt'
    log4j.appender.k.layout=org.apache.log4j.PatternLayout
    log4j.appender.k.layout.ConversionPattern=%d [%F:%L] - %m \r\n5、在类中的的设置如下:
    class类中如下:
    static Logger debugLog=new Logger.getLogger("debug")
    static Logger infoLog=new Logger.getLogger("info")
    static Logger errorLog=new Logger.getLogger("error")
    这样不同级别的log信息就可以打在不同的log文件中.
    例如debugLog.debug(“”);就打印到上面的debuginfo中。
         InfoLog.info(“”);就打印到上面的infoLog中。