在java项目中使用log4j的实例

测试log4j的项目结构

Log4j.properties的路径为    src/config/log4j

Log4j.properties文件的内容

下面定义日志输出级别是 INFO,并且配置了2个输出目的地,一个是A3,一个是console

log4j.rootLogger = INFO,A3,CONSOLE

//日志最低的输出级别
log4j.appender.A3.Threshold=INFO
log4j.appender.A3.encoding=UTF-8
//每天产生一个文件DailyRollingFileAppender  
log4j.appender.A3 = org.apache.log4j.DailyRollingFileAppender
//file 属性  指定产生日志文件的保存位置及文件名,这里是windows下的配置
// c:/logtest/logtest.log,
//公司项目在linux下的配置是/app/weblogic/applications/logs/sxvip_logs
log4j.appender.A3.File=c:/logtest/logtest.log
//当有日志时立即输出,默认是true
log4j.appender.A3.ImmediateFlush=true
log4j.appender.A3.DatePattern='_'yyyy-MM-dd
//日志布局方式
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
//日志文件中日志的格式
log4j.appender.A3.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss} OSS %-5p [%c] - %m%n

//这里使用org.apache.log4j.ConsoleAppender指定要把日志输出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=INFO
//输出目标是 控制台
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss} OSS %-5p [%c] - %m%n
View Code

Web应用中web.xml利用Spring配置log4j

在web.xml中添加配置
<!-- 配置log4j配置文件的路径,可以是xml或 properties(此参数必须配)--> 
下面使用了classpath 参数指定log4j.properties文件的位置,这样log4j的配置文件就不用非要放到src的下面
<context-param>
   <param-name>log4jConfigLocation</param-name>
 <param-value>classpath:config/log4j/log4j.properties</param-value>
</context-param> 
使用spring的监听器,当应用启动时来读取log4j的配置文件
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
View Code

java中使用log4j

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; 
public class MyServiceParamAction extends BaseAdmAction{

private static final Log log = 
LogFactory.getLog(MyServiceParamAction.class);


public ActionForward NgCallServiceInfo(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    // 获得登录用户信息,没有登录提示用户需要重新登录
    log.info("我的服务查询开始.....................................");
    UserBean user = (UserBean) request.getSession().getAttribute("USER_INFO");
    log.info("从session中获取登录用户user                 "+user);
    if (user != null) {
        log.info("user.getMisisdn()            "+user.getMsisdn()); 
. . . 
}
View Code

当应用启动时,这里就会根据log4j的配置(log4j.appender.A3.File=c:/logtest/logtestxxx.log)在c盘下产生日志文件

当访问项目的资源时就会在该文件中添加日志信息

2013/12/05 11:46:33 OSS INFO  [com.sinovatech.myservice.action.MyServiceParamAction] - 我的服务查询开始...........

2013/12/05 11:46:33 OSS INFO  [com.sinovatech.myservice.action.MyServiceParamAction] - 从session中获取登录用户  user  null

2013/12/05 11:46:33 OSS INFO  [com.sinovatech.myservice.action.MyServiceParamAction] - VIP 我的服务  查询  结束........

注意当在java类的main方法中测试时,不会在日志文件中添加日志信息

posted @ 2013-12-05 12:01  wanggd_blog  阅读(26081)  评论(3编辑  收藏  举报