Java/JSP log4j:WARN 请正确初始化log4j系统
Java/JSP log4j:WARN Please initialize the log4j system properly
我目前正在做 java/jsp 项目,但我无法正确初始化 log4j。我想要的是当 Apache Tomcat 服务器启动时,servlet 应该 运行 指向 "init.jsp"。在 "init.jsp" 中有 "log4j.xml" 路径所在的位置。我想在 aparche tomcat 启动时初始化 log4j。以下是我所做的。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Project01</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>init</servlet-name>
<jsp-file>/init.jsp</jsp-file>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
init.jsp
<%@ page language="java" import="java.io.*,java.sql.*,javax.naming.*,java.util.*" errorPage="" buffer="none" %>
<%@page import="com.company.util.LogUtil"%>
<% System.out.println("+++++++++++++++++++");
%>
<%!
public void jspInit( javax.servlet.jsp.JspWriter out2)throws java.io.IOException{
System.out.println("+++++++++Init++++++++++++");
String rPath = getServletConfig().getServletContext().getRealPath("");
out2.println("rPath "+rPath);
//location of log4j.xml file
LogUtil.init(rPath + "/conf/log4j.xml");
LogUtil.getEventLog().debug("Log initialized");
}
%>
<%
jspInit(out);
%>
问题是当我启动服务器时,服务器没有启动 "init.jsp"。所以控制台说
log4j:WARN No appenders could be found for logger (Login).
log4j:WARN Please initialize the log4j system properly.
但是当我通过右键单击服务器上的 "init.jsp"page-> 运行 as-> 运行 手动启动 "init.jsp" 时,log4j 工作并且正在记录日志正确。
可能的错误点是"web.xml"没有正确调用"init.jsp"。所以 "init.jsp" 在服务器启动时不起作用。但我手动启动 "init.jsp"。一切正常。
很简单。使用此代码作为 init.jsp.
<%@ page language="java"
import="java.io.*,java.sql.*,javax.naming.*,java.util.*" errorPage=""
buffer="none"%>
<%@page import="com.mobios.util.LogUtil"%>
<%
out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"+getServletConfig().getServletContext().getRealPath(""));
%>
<%!
public void jspInit(){
System.out.println("+++++++++++++++++++Init+++++++++++++++++++++++++");
String rPath = getServletConfig().getServletContext().getRealPath("");
System.out.println("rPath "+rPath);
LogUtil.init(rPath + "/conf/log4j.xml");
LogUtil.getEventLog().debug("Service initialized,,,,,,,,,,,,,");
}
%>
问题出在 jspInit() 函数上。不要使用参数并删除 out2.println (它用于在浏览器中打印结果)。并删除最后一个函数调用。此更改将使您的 init.jsp 工作
我目前正在做 java/jsp 项目,但我无法正确初始化 log4j。我想要的是当 Apache Tomcat 服务器启动时,servlet 应该 运行 指向 "init.jsp"。在 "init.jsp" 中有 "log4j.xml" 路径所在的位置。我想在 aparche tomcat 启动时初始化 log4j。以下是我所做的。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Project01</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>init</servlet-name>
<jsp-file>/init.jsp</jsp-file>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
init.jsp
<%@ page language="java" import="java.io.*,java.sql.*,javax.naming.*,java.util.*" errorPage="" buffer="none" %>
<%@page import="com.company.util.LogUtil"%>
<% System.out.println("+++++++++++++++++++");
%>
<%!
public void jspInit( javax.servlet.jsp.JspWriter out2)throws java.io.IOException{
System.out.println("+++++++++Init++++++++++++");
String rPath = getServletConfig().getServletContext().getRealPath("");
out2.println("rPath "+rPath);
//location of log4j.xml file
LogUtil.init(rPath + "/conf/log4j.xml");
LogUtil.getEventLog().debug("Log initialized");
}
%>
<%
jspInit(out);
%>
问题是当我启动服务器时,服务器没有启动 "init.jsp"。所以控制台说
log4j:WARN No appenders could be found for logger (Login).
log4j:WARN Please initialize the log4j system properly.
但是当我通过右键单击服务器上的 "init.jsp"page-> 运行 as-> 运行 手动启动 "init.jsp" 时,log4j 工作并且正在记录日志正确。
可能的错误点是"web.xml"没有正确调用"init.jsp"。所以 "init.jsp" 在服务器启动时不起作用。但我手动启动 "init.jsp"。一切正常。
很简单。使用此代码作为 init.jsp.
<%@ page language="java"
import="java.io.*,java.sql.*,javax.naming.*,java.util.*" errorPage=""
buffer="none"%>
<%@page import="com.mobios.util.LogUtil"%>
<%
out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"+getServletConfig().getServletContext().getRealPath(""));
%>
<%!
public void jspInit(){
System.out.println("+++++++++++++++++++Init+++++++++++++++++++++++++");
String rPath = getServletConfig().getServletContext().getRealPath("");
System.out.println("rPath "+rPath);
LogUtil.init(rPath + "/conf/log4j.xml");
LogUtil.getEventLog().debug("Service initialized,,,,,,,,,,,,,");
}
%>
问题出在 jspInit() 函数上。不要使用参数并删除 out2.println (它用于在浏览器中打印结果)。并删除最后一个函数调用。此更改将使您的 init.jsp 工作