首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Eclipse下log4j的配置有关问题

2012-04-06 
Eclipse下log4j的配置问题已经在工程中添加了外部log4j-1.2.9.jar文件,但运行后提示说找不到log4j.propert

Eclipse下log4j的配置问题
已经在工程中添加了外部log4j-1.2.9.jar文件,但运行后提示说找不到log4j.properties文件,可我以把log4j.properties放到了WEB-INF下了,而且web.xml配置也应该没问题,为什么会找不到,请各位指点,谢谢。具体文件如下:
servlet文件:

package   com.mylog;

import   javax.servlet.*;
import   java.io.*;
import   javax.servlet.http.*;
import   java.sql.*;
import   org.apache.log4j.*;

public   class   DBExceptionServlet   extends   HttpServlet
{
static   Logger   logger=Logger.getRootLogger();
static   Logger   bookLogger=Logger.getLogger( "bookstoreLogger ");
        public   void   init()   throws   ServletException
        {
        String   prefix=getServletContext().getRealPath( "/ ");
        String   file=getInitParameter( "log4j-init-file ");
       
        if(file!=null){
        PropertyConfigurator.configure(prefix=file);
        }
                try
                {
                        Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
                       
                }
                catch(ClassNotFoundException   ce)
                {
                        throw   new   UnavailableException( "加载数据库驱动失败! ");
                }
        }
       
        public   void   doGet(HttpServletRequest   req,   HttpServletResponse   resp)
                              throws   ServletException,IOException
        {      
                Connection   conn=null;
                Statement   stmt=null;
                try
                {
                        conn=DriverManager.getConnection(
                        "jdbc:microsoft:sqlserver://localhost:1433;databasename=pubs ", "sa ", "winsun1234 ");
                        stmt=conn.createStatement();
                        stmt.executeUpdate( "delete   from   jobs   where   job_id=13 ");
                }
                catch(SQLException   se)
                {
                       
                logger.warn( "数据库操作失败! "+se);


                        logger.error( "数据库操作失败! "+se);
                        bookLogger.warn( "数据库操作失败! "+se);
                        bookLogger.error( "数据库操作失败! "+se);
                        resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                                                "数据库操作出现问题,请联系管理员。 ");
                }
                finally
                {
                        if(stmt!=null)
                        {
                                try
                                {
                                        stmt.close();
                                }
                                catch(SQLException   se)
                                {
                                bookLogger.error( "数据库操作失败! "+se);
                                }
                                stmt=null;
                        }
                        if(conn!=null)
                        {
                                try
                                {
                                        conn.close();
                                }
                                catch(SQLException   se)
                                {
                                bookLogger.error( "数据库操作失败! "+se);
                                }


                                conn=null;
                        }
                }
        }
}

log4j.properties配置文件:
#根记录器的日志级别是ERROR,在这个级别以下的日志信息将被忽略。
#为根记录器指定名字为console的Appender
log4j.rootLogger=ERROR,console

#定义bookstoreLogger记录器,没有设置日志级别,将继承根记录器的级别。
#为bookstoreLogger记录器指定名字为file的Appender,bookstoreLogger记录器还将继承根记录的Appender。
log4j.logger.bookstoreLogger=,file

#定义一个名字为console的Appender,它的类型是ConsoleAppender。
log4j.appender.console=org.apache.log4j.ConsoleAppender
#console   Appender使用的Layout的是SimpleLayout。
log4j.appender.console.layout=org.apache.log4j.SimpleLayout

#定义一个名字为file的Appender,它的类型是FileAppender。
log4j.appender.file=org.apache.log4j.FileAppender
#指定file   Appender输出的日志文件的名字和存放路径。
log4j.appender.file.File=F:/JSPLesson/ch19/WEB-INF/ch19.log

#file   Appender使用的Layout的是PatternLayout。
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#指定日志信息的输出格式
#log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd   HH:mm:ss}   [%c]-[%-5p]   %m%n%n

web.xml文件:
...
<servlet>
<servlet-name> DBExceptionServlet </servlet-name>
<servlet-class> com.mylog.DBExceptionServlet </servlet-class>
<init-param>
<param-name> log4j-init-file </param-name>
<param-value> WEB-INF/log4j.properties </param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name> DBExceptionServlet </servlet-name>
<url-pattern> /dbexcept </url-pattern>
</servlet-mapping>
...


[解决办法]
运行前用build.xml将log4j.properties复制到src根目录下,或直接将log4j.properties放到src根目录下
[解决办法]
log4j.properties要放到Java Source目录下的
[解决办法]
是src目录不是web-inf目录
[解决办法]
放在web-inf/lib下面
[解决办法]
lib下面没放过
都是在src下面的
[解决办法]
放到 WEB-INF\classes 里
[解决办法]
log4j.properties 放到src下,会自动生成到 WEB-INF\classes\下,
也可以直接放在 WEB-INF\classes\ 下,最终起作用的还是在这里的那个!
---------
在 WEB-INF\classes\ 下的时候,就不用在web.xml中进行配置,系统启动的时候会自动加载;

========
如果,放在别的地方,需要在 web.xml中进行相应的配置
[解决办法]
你要知道。。。。

工程在什么时候什么地方加载的log4j.properties 看一下log4j 源码

热点排行