在系列一 中, 有一个问题一直没有解决,就是部署到weblogic 中应用程序如何通过log4j写日志到文件中?
这里仅仅使用log4j, 而不使用 commons-logging, 关于log4j 和commons-logging的区别和关联,请参考
这个实例很简单,就是定义一个servlet, 用来写日志
1. 使用eclipse 创建一个动态web 项目, 导入log4j.jar 包
2. 创建一个servlet 类
/** * @author oscar999 * @date 2013-7-31 * @version V1.0 */ package com.oscar999; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class LogServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void service(HttpServletRequest req, HttpServletResponse res) { testLog4j(); try { PrintWriter out = res.getWriter(); out.println("<Hr><h1>Please check the Logs Are generated in .log or Not ....."); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void testLog4j() { Logger log = Logger.getLogger(LogServlet.class); PropertyConfigurator.configure("log4j.properties"); log.debug("Debug info."); log.info("Info info"); log.warn("Warn info"); log.error("Error info"); log.fatal("Fatal info"); } }
3. 在web.xml 中添加servlet 配置
<?xml version="1.0" encoding="UTF-8"?> <!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> <display-name>logTestApp</display-name> <servlet> <servlet-name>LogServlet</servlet-name> <servlet-class>com.oscar999.LogServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>LogServlet</servlet-name> <url-pattern>/logServlet</url-pattern> </servlet-mapping> <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> </web-app>
4. 编写一个 log4j.properties 文件
log4j.rootLogger=debug,stdout,logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.File=logfile.log log4j.appender.logfile.MaxFileSize=512KB log4j.appender.logfile.MaxBackupIndex=3 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
5. 把log4j.properties文件放入 user_projects\domains\base_domain 下。(base_domain是这里使用的domain name, 如果domain name 不一样,应该知道要怎么做了)
因为上面servlet 中,读取log4j 的配置是 PropertyConfigurator.configure("log4j.properties");
这样就直接到 base_domain的路径下去找log4j.properties。
在log4j.properties配置产生的日志文件 logfile.log默认也会放到 base_domain目录下,
也可以修改, 建议是可以放到 “base_domain\servers\AdminServer\logs” 这个目录下。
6. 接下来通过 http://localhost:8080/appname/servletname
访问就可以了