Log4j的简单使用
1.本地工程
使用代码加载log4j的配置文件
PropertyConfigurator.configure("log4j.properties");
使用log4j
Logger logger = Logger.getLogger(this.getClass());
logger.info("start up...");
2.普通Web工程
在使用servlet或Listener在应用启动的时候使用代码加载log4j的配置文件,比如listenner,在web.xml注册listenner
<listener>
<listener-class>com.ws.commons.core.Startup</listener-class>
</listener>
<context-param>
<param-name>log4j</param-name>
<param-value>/WEB-INF/config/applicationContext.xml</param-value>
</context-param>
实现自己的listenner
package com.ws.commons.core;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Startup implements ServletContextListener {
Logger logger = Logger.getLogger(this.getClass());
public Startup() {
}
public void contextInitialized(ServletContextEvent arg0) {
String rootPath=arg0.getServletContext().getRealPath("/");
PropertyConfigurator.configure(rootPath+arg0.getServletContext().getInitParameter("log4j"));
logger.info("Begin start up...");
}
public void contextDestroyed(ServletContextEvent arg0) {
}
}
3.集成spring的web工程,在web.xml中注册 spring的Log4jConfigListener,并传入log4j配置文件位置
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/config/log4j.properties</param-value>
</context-param>
4.log4j.properties的简单说明
### 定义了使用ConsoleAppender(控制台) 的 名为 stout的 日志输出方式 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender###即 控制台
log4j.appender.stdout.Target=System.out###还可使用 System.err
log4j.appender.stdout.Threshold=ALL#stout的输出级别
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout#使用的日志布局
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c:%L - %m%n#格式化
#-X 号: X 信息输出时左对齐
#%p: 输出日志信息优先级,即 DEBUG,INFO,WARN,ERROR,FATAL
#%d: 输出日志时间点的日期或时间,默认格式为 ISO8601,也可以在其后指定格式, 比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002 年 10 月 18 日 22:10:28,921
#%r: 输出自应用启动到输出该 log 信息耗费的毫秒数
#%c: 输出日志信息所属的类目,通常就是所在类的全名
#%t: 输出产生该日志事件的线程名
#%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及行数
#%x: 输出和当前线程相关联的 NDC %%: 输出一个"%"字符
#%F: 输出日志消息产生时所在的文件名称
#%L: 输出代码中的行号
#%m: 输出代码中指定的消息,产生的日志具体信息
#%n: 输出一个回车换行符 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式
### 定义了使用FileAppender(文件)的 名为 file的 日志输出方式 ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=log4js.log###日志输出的文件位置
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
###Appenders
#org.apache.log4j.ConsoleAppender
#org.apache.log4j.FileAppender
#org.apache.log4j.DailyRollingFileAppender #按一定的频度滚动日志记录文件
#org.apache.log4j.RollingFileAppender#按一定的文件大小滚动记录日志文件
#org.apache.log4j.WriterAppender
###Layouts
#org.apache.log4j.HTMLLayout
#org.apache.log4j.PatternLayout
#org.apache.log4j.SimpleLayout
#org.apache.log4j.TTCCLayout
### set log levels - for more verbose logging change 'info' to 'debug' ###
#ALL < DEBUG < INFO <WARN < ERROR < FATAL < OFF
log4j.rootLogger=ALL,stdout,file ##定义root的日志输出级别,以及采用的 已经定义好的输出方式
#可以分别指定具体包或类的日志输出级别
#log4j.logger.org.apache.struts2=off
#log4j.logger.org.springframework=warn
#log4j.logger.com.opensymphony.xwork2=warn
#log4j.logger.com.maneater=off
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
#log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
#log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace