log4j 使用详解

总结一下log4j 在项目中得使用

1.配置文件说明

#log4j中有五个级别的日志
#OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 依次降低


log4j.rootCategory=INFO,stdout,logfile, 
#将等级为INFO的日志信息使用stdout logfile分别输出


#stdout configure
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#stdout 输出位置是控制台

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#stdout 输出的格式是自定义格式

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
#pattern布局就要指定的打印信息的具体格式ConversionPattern %d:时间 %p:输出日志等级 %c:通常就是所在类的全名   %m 输出代码中指定的消息 %n 输出一个回车换行符
log4j.appender.stdout.Target = System.out  
#指定输出控制台


#logfile configure
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
#logfile 输出日志到文件 每天产生一个日志文件
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
#logfile 每天产生一个文件
log4j.appender.logfile.File= ../logs/dpsm.log
#logfile 输出文件的日志路径以及名称 这里可以自定义 上面的路径是相对于tomcat的bin文件夹

log4j.appender.logfile.Append=true
#logfile 内容追加
log4j.appender.logfile.Threshold=INFO
#只输出INFO级别以上的信息
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
#log4j 输出日志格式 自定义
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n


2.在项目中如何使用 

2.1 在web中使用 指定配置文件的路径

<context-param>
		<param-name>log4jConfigLocation</param-name>
                <!--param-name 设定上下文的参数名称。必须是唯一名称-->
		<param-value>/WEB-INF/cfg/log4j.properties</param-value>
<!--param-value 设定的参数名称的值-->
	</context-param>
	
	<listener>
		<listener-class> cn.datawin.listener.AnalysisListener</listener-class>
       <!--监听器-->
	</listener>




 

2.2 初始化过程:

    1. 在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>。
    2. 接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。
    3. 接着容器会将读取到<context-param>转化为键值对,并交给ServletContext。
    4. 容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)。
    5. 在监听的类中会有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param 设定的值。在这个类中还必须有一个contextDestroyed(ServletContextEvent event) 销毁方法.用于关闭应用前释放资源,比如说数据库连接的关闭。
    6. 得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早。
2.3 在监听器中加载初始化log4j

public class AnalysisListener implements ServletContextListener
{
public void contextInitialized(ServletContextEvent sce) {
		Log4jWebConfigurer.initLogging(sce.getServletContext());
}
@Override
	public void contextDestroyed(ServletContextEvent sce) {
		
		Log4jWebConfigurer.shutdownLogging(sce.getServletContext());
	}

}
2.4 初始化完成后就可以在类中使用log4j输出日志
 
</pre><pre name="code" class="java">public class AttachDao extends AdvancedDao<Attach>
{
    private  static Logger logger = Logger.getLogger(AttachDao.class);
	
	public AttachDao() {

		super(Attach.class);
        logger.info("初始化AttachDao");
        logger.error("定义一个error级别的日志");
        logger.info("定义一个info级别的日志");
        logger.debug("定义debug级别的日志");
        logger.warn("定义warn级别的日志");
	}

	/**
	 * 增加
	 */
	public String insertOne(Attach attach) {
        logger.info("attachDao执行了insertOne方法");
		this.insert(attach);
		return attach.getId();
	}
}

这样你可以在自己想要加日志的地方添加日志 并且设置日志级别 方便调试和发布





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值