Log4j的使用教程
来源:互联网 发布:网络线上赌博 编辑:程序博客网 时间:2024/06/07 14:11
关于Log4J日志的配置详细解析请参考:http://blog.csdn.net/qq_32786873/article/details/51801116
一.在java项目中使用Log4j
1.新建一个Java工程,导入包log4j-1.2.17.jar,整个工程最终目录如下
2.src同级创建并设置log4j.properties
log4j.properties文件配置如下:
log4j.rootLogger=DEBUG, A1 ,R log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=D:\\Test_Log4j.log log4j.appender.R.MaxFileSize=100KB log4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%n
3、设置日志内容
package Solin;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;public class TestLog4J {private static Logger log = Logger.getLogger(TestLog4J.class);public static void main(String[] args) {PropertyConfigurator.configure(".\\src\\log4j.properties");log.debug("This is debug message!");log.info("This is info message!");log.warn("This is warn message!");log.error("This is error message!");}}4.输出结果
(1)首先是控制台的信息
(2)再来看输出的文件
以下内容来源于:http://www.codeceo.com/article/log4j-usage.html
二.Web项目中使用Log4j实例
上面代码描述了Log4j的简单应用,其实使用Log4j也就是这样简单方便。当然除了上面的配置方法,还有其它,比如做一个J2EE应用,在J2EE应用中使用Log4j,必须先在启动服务时加载Log4j的配置文件进行初始化,可以在web.xml中进行。
1、web应用的log4j使用基本上都采用:新建一个servlet,这个servlet在init函数中为log4j执行配置。一般就是读入配置文件。所以需要在web.xml中为这个servlet配置,同时设定load-on-startup为1。
2、这个servlet配置log4j就是读出配置文件,然后调用configure函数。这里有两个问题:一、需要知道文件在哪里;二、需要正确的文件类型
3、配置文件位置在web.xml中配置一个param即可,路径一般是相对于web的root目录
4、文件类型一般有两种,一个是Java的property文件,另一种是xml文件
配置文件的大致内容:log4j可以指定输出的log级别的最低等级,以及log的输出配置格式,每个log可以指定多个输出方式
(1)创建Web工程,整个工程最后目录如下
(2)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>TestLog4J</display-name> <servlet> <servlet-name>Log4JTestServlet</servlet-name> <servlet-class>Solin.Log4JTestServlet</servlet-class> </servlet> <!--用来启动 log4jConfigLocation的servlet --> <servlet> <servlet-name>Log4JInitServlet</servlet-name> <servlet-class>Solin.Log4JInitServlet</servlet-class> <init-param> <param-name>log4j-properties-location</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Log4JTestServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> </web-app>
(3)配置文件log4j.properties
log4j.rootLogger=DEBUG, A1 ,R log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=D:\\Test_Log4j.log log4j.appender.R.MaxFileSize=100KB log4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%n
(4)web容器一来就初始化的servlet
Log4JInitServlet.java
package Solin;import java.io.File;import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.BasicConfigurator;import org.apache.log4j.PropertyConfigurator;@WebServlet("/Log4JInitServlet") public class Log4JInitServlet extends HttpServlet {private static final long serialVersionUID = -8587938407567965599L;public Log4JInitServlet() {super();}@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println("Log4JInitServlet 正在初始化 log4j日志设置信息"); String log4jLocation = config.getInitParameter("log4j-properties-location"); ServletContext sc = config.getServletContext(); if (log4jLocation == null) { System.err.println("*** 没有 log4j-properties-location 初始化的文件, 所以使用 BasicConfigurator初始化"); BasicConfigurator.configure(); } else { String webAppPath = sc.getRealPath("/"); String log4jProp = webAppPath + log4jLocation; File file = new File(log4jProp); if (file.exists()) { System.out.println("使用: " + log4jProp+"初始化日志设置信息"); PropertyConfigurator.configure(log4jProp); } else { System.err.println("*** " + log4jProp + " 文件没有找到, 所以使用 BasicConfigurator初始化"); BasicConfigurator.configure(); } } super.init(config); }@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stub}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stub}}
(5)调用日志Log4JTestServlet.java
package Solin;import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;@WebServlet("/Log4JTestServlet") public class Log4JTestServlet extends HttpServlet {private static final long serialVersionUID = 6357686651026518299L;private static Logger log = Logger.getLogger(Log4JTestServlet.class);public Log4JTestServlet() {super();}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 记录debug级别的信息 log.debug("This is debug message!"); // 记录info级别的信息 log.info("This is info message!"); // 记录warn级别的信息 log.warn("This is warn message!"); // 记录error级别的信息 log.error("This is error message!"); }@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}@Overridepublic void init(ServletConfig config) throws ServletException {// TODO Auto-generated method stub}}
(6)控制台信息:
(7)输出结果:
三、Spring中使用Log4j
这里要实现web项目中利用Spring来使用Log4j
(1)接上面的工程,然后再导入Spring的包
(2)web.xml增加
<!-- 设置根目录 --> <context-param> <param-name>webAppRootKey</param-name> <param-value>webapp.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <!-- 3000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;这样便于日志存放位置的改变 --> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>3000</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
整个内容如下:
<?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>TestLog4J</display-name> <servlet> <servlet-name>Log4JTestServlet</servlet-name> <servlet-class>com.mucfc.Log4JTestServlet</servlet-class> </servlet> <!--用来启动 log4jConfigLocation的servlet --> <!-- <servlet> <servlet-name>Log4JInitServlet</servlet-name> <servlet-class>com.mucfc.Log4JInitServlet</servlet-class> <init-param> <param-name>log4j-properties-location</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>--> <servlet-mapping> <servlet-name>Log4JTestServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> <!-- Spring 容器加载 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 设置根目录 --> <context-param> <param-name>webAppRootKey</param-name> <param-value>webapp.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <!-- 3000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;这样便于日志存放位置的改变 --> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>3000</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> </web-app>
这里Log4JInitServlet.java就相当于没用到了。
(3)applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsd"> </beans>
(4)这样日志就跟随Spring窗口启动而启动了
程序一运行,就会自动把日志打印
Test_Log4j.log
浏览器输入http://localhost:8080/TestLog4J/test
- Log4j的使用教程
- 详细的Log4j使用教程
- 详细的Log4j使用教程
- 详细的Log4j使用教程
- 详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程(一)
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程
- 最详细的Log4j使用教程(二)
- AutoCompleteTextView的简单使用
- Android-自定义View的使用
- ACdream1417-Numbers
- 微信自动关闭内置浏览器
- 全局函数如何跨文件使用
- Log4j的使用教程
- C#学习笔记-Winform 界面笔记
- ThinkPHP框架学习之String类
- splice()方法删除数组中不连续的几项
- Cocoapods提高速度的镜像
- 安卓开发工程师必备的后台知识(Jfinal的配置和了解,VisualSVN server的配置,数据库的安装)
- Resolving conflicts between main and test APK
- python3.4实现调用opencv3.1.0显示图像
- yarn LocalResourcesTrackerImpl remove resource Error