使用log4j进行日志管理
17.1、Log4j简介
作用:
1、 跟踪代码的运行轨迹。
2、 输出调试信息.
三大组成:
1、 Logger类-生成日志。
2、 Appender类-定义日志输出的目的地。
3、 Layout类-指定日志输出的格式。
17.1.1 Logger组件
日志共分为5种级别,从高到底(从严重到轻微)排序为:
FATAL—严重的错误,可能会导致程序不能正常运行.
ERROR – 错误,影响程序的正常运行。
WARN – 警告,不会影响程序的运行。最好将此问题修正。
INFO – 一般信息。不影响程序的运行。可能是用户的调试信息。可有可无。等同于syserr
DEBUG – 一般的信息。等同于sysout
上面五种级别分别对应以下几个方法 P255
fatal(Object)
error(Object)
warn(Object)
info(Object)
debug(Object)
Trace(跟踪)
当信息大于或是等于配置的级别时才会输出日志。
17.1.2、Appender组件
(仅要求记住两个)
Console – 控制台。org.apache.log4j.ConsoleAppender
File - 文件。 org.apache.log4j.FileAppender , org.apache.log4j.RollingFileAppender
17.1.3、Layout组件
功能是定义日志的输出格式
org.apache.log4j.HTMLLayout
org.apache.log4j.PatternLayout (自定义)
org.apache.log4j.SimpleLayout
对于自定义格式,see page 256 chart 17-1。
%d %p %c %m%n是我经常用的格式,要求记住.
%d – 具体的时间.
%p – 优先级
%c – 信息的输入类
%m%n – 信息文本
17.2、Log4j的基本使用方法
(以下以项目ch16为例)
步1、将log4j.jar文件,Copy到WEB-INF/lib目录下。
(此时发布程序,启动程序,会发出警告信息。信息要求配置log4j.properties文件)
步2、在src目录下(即WEB-INF/classes)建立一个log4j.properties文件
在WEB-INF/classes目录下,为log4j的默认目录。Log4j.properties也是log4j的默认文件名。
步3、书写log4j.properties文件如下:
#####配置根元素
log4j.rootLogger=INFO,file,console
#file的输入地址为文件
log4j.appender.file=org.apache.log4j.RollingFileAppender
#以下是具体的目录
log4j.appender.file.File=d:/a.log
#每个文件的最大大小
log4j.appender.file.MaxFileSize=512KB
#最多可以是多少个文件
log4j.appender.file.MaxBackupIndex=3
#信息的布局格式-按指定的格式打出
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#具体的布局格式 - %d为时间
log4j.appender.file.layout.ConversionPattern=%d %p [%c] %m%n
#以下配置输出到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] %m%n
####以下配置自己的类输出日志的信息,即将com.three包下的日志输出到的目录
###同时也会打出到控制台。尽管是没有配置打出到控制台。但依据log4j的继承性,它仍然具体打出的控制台的功能。
log4j.category.com.three=INFO,myFile
log4j.appender.myFile=org.apache.log4j.RollingFileAppender
log4j.appender.myFile.File=d:/b.txt
log4j.appender.myFile.layout=org.apache.log4j.PatternLayout
log4j.appender.myFile.layout.ConversionPattern=%d %p [%c] %m%n
具体的说明,请参考上面以#号注释的部分。
注意上面红体字下面的部分,是书上没有讲的。此部分只配置对com.three包下的类指出日志信息。掌握具体配置的方法。
步4、书写自已的类,并在自己的类中使用日志
package com.three;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* 打出日志信息的类
* @version 1.0,2008-5-4
*/
public class ThreeAction extends Action{
//获取log对像
Logger log = Logger.getLogger(ThreeAction.class);
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse rep){
log.info("Hello...我使用log打出的信息");
return mapping.findForward("success");
使用log4j进行日志管理的更多相关文章
- Spring Boot 整合 slf4j+log4j 实现日志管理
一:首先新建一个jar项目,如下图: 二:添加log4j的依赖,如下pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0 ...
- commons-logging和Log4j 日志管理/log4j.properties配置详解
commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...
- Spring集成log4j日志管理
原文地址:http://blog.csdn.net/naruto1021/article/details/7969535 在使用Spring框架的时候,我们可以很方便的配置log4j来进行日志管理. ...
- android log4j日志管理的使用
以下为log4j1的日志管理,在android 6.0 一下能正常使用,时候更加高级的胃log4j2,持续跟新 android中的log4j日志文件使用需要两个包,我们不需要进行配置文件的配置,一切都 ...
- springboot日志管理+集成log4j
sprongboot使用的默认日志框架是Logback. 可以在application.properties配置简单日志属性,也可以单独配置logback.xml格式,还可以使用log4j来管理. 下 ...
- 项目log4j日志管理详解
项目log4j日志管理详解 log4j日志系统在项目中重要性在这里就不再累述,我们在平时使用时如果没有特定要求,只需在log4j.properties文件中顶入输出级别就行了.如果要自定义输出文件,对 ...
- Log4j日志管理的简单实例
大型项目中非常多情况下要分析程序的日志信息,怎样管理自己的日志信息至关重要. 在应用程序中加入日志记录总的来说基于三个目的 , 监视代码中变量的变化情况,周期性的记录到文件里供其它应用进行统计分析工作 ...
- Java日志管理:Logger.getLogger()和LogFactory.getLog()的区别(详解Log4j)
Java日志管理:Logger.getLogger()和LogFactory.getLog()的区别(详解Log4j) 博客分类: Java综合 第一.Logger.getLogger()和Log ...
- Java 日志管理最佳实践
转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...
随机推荐
- 05-MySQL的完整性约束
1.整体说明(1)讨论重点内容 not null 与default unique:表中该值唯一,不能有重复值 primary auto_increment foreign ...
- 机器学习经典算法之KNN
一.前言 KNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种. 先用一个例子体会下. /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://w ...
- 推荐三个学习git的网站或教程
廖雪峰官方教程:https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136 ProGit中文版:https://git-scm.c ...
- Node.js实现PC端类微信聊天软件(五)
Github StackChat 学习回顾 Socket.io 结合Express创建Socket.io服务器 const app = require('express')() const http ...
- C#学习笔记:ListBox控件的用法
样式如下: 实现的代码一: using System;using System.Collections.Generic;using System.ComponentModel;using System ...
- RABC权限控制(二级菜单实现)
目前大部分系统由于用户体验,基本上菜单不会做的很深,以二级菜单为例,做了一个简单的权限控制实现,可精确到按钮级别(基于django),下面具体看看实现 1.表结构的设计 无论开发什么都需要先梳理清楚需 ...
- 试题--创建三个进程/线程,依次输出 A、B、C
这是一道机试题,大概的预期执行结果如下图所示 最近刚好在学习linux编程,便使用多线程及多进程分别实现了一遍,其中多线程较为简单,使用0/1信号量在线程间实现生产者/消费者即可:多进程则稍微复杂一些 ...
- 常用的方法论-PARR
- mysql计算日期之间相差的天数
TO_DAYS(NOW()) - TO_DAYS(createTime) as dayFactor,
- hibernate中的dialect解释
dialect就是“方言”,因为hibernate是要把Java对象转换成关系数据库来描述的,而关系数据库虽然有一些统一的标准,如SQL-92等,但是实际上各数据库如Oracle, MySQL, MS ...