使用2.5版本有问题,暂时没有解决,也许是JDK版本不兼容的原因。因此使用的是log4j-1.2.8.jar

1、三个组件

  日志记录器  ——  Logger、输出目的地 —— Appender、输出格式 —— Layout ;

  一个logger可以对应多个appender,一个appender只能对应一个layout,必须对应一个layout。

入门级程序:

 import java.io.File;
import java.io.IOException;
//import org.apache.logging.log4j.core.Logger;
import org.apache.log4j.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Log4JInitServlet
*/
public class Log4JInitServlet extends HttpServlet{
private static Logger logger ;
public Log4JInitServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
super.init(config);
try{
System.out.println("当前路径默认=======" + System.getProperty("user.dir")); logger=Logger.getLogger(Log4JInitServlet.class);
PropertyConfigurator.configure("C:\\myTestJava\\Log4JWeb\\WebRoot\\ini\\log4j.properties");
logger.info("Info: this is info;");
logger.debug("Debug: this is Debug;");
logger.error("Error: this is Error;");
System.out.println("------------------Init success");
}catch(Exception e){
System.out.println("Warning:there is an error:" + e.getMessage());
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}

log4j_servlet

  ### 设置###
log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 输出DEBUG 级别以上的日志到=C://logs/log.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = C://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r]-[%c-%l]-[ %p ] %m%n ### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =C://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r]-[%c-%l]-[ %p ] %m%n

配置文件

  配置文件的格式一般为:

  1、首先配置根Logger

  #配置根Logger

  log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …

  样例:log4j.rootLogger = debug,stdout,D,E

  2、配置输出的目的地 及 相关属性

  #配置日志信息输出目的地(Appender)

  log4j.appender.appenderName  =  fully.qualified.name.of.appender.class

  log4j.appender.appenderName.option1  =  value1

  …

  log4j.appender.appenderName.optionN  =  valueN

  样例:-------

  3、配置输出格式

  #配置日志信息的格式(Layout)

  log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class

  log4j.appender.appenderName.layout.option1  =  value1

  …

  log4j.appender.appenderName.layout.optionN  =  valueN

自定义格式输出的参数格式含义:

    格式名   含义

  1. %c         输出日志信息所属的类的全名
  2. %d         输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
  3. %f          输出日志信息所属的类的类名
  4. %l          输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行  (Log4JInitServlet.init(Log4JInitServlet.java:31))类名.函数名
  5. %m        输出代码中指定的信息,如log(message)中的message
  6. %n         输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
  7. %p         输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
  8. %r          输出自应用启动到输出该日志信息所耗费的毫秒数
  9. %t          输出产生该日志事件的线程名

appender的种类:

org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 配置 文件大小达到指定大小的时候,产生一个新文件:
### 输出DEBUG 级别以上的日志到=C://logs/log.log 指定文件大小###
log4j.appender.D = org.apache.log4j.RollingFileAppender
log4j.appender.D.File = C://logs/log.log
log4j.appender.D.MaxFileSize = 2KB
log4j.appender.D.MaxBackupIndex=100
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r]-[%c-%l]-[ %p ] %m%n

达到指定文件大小 生成新文件

配置输出到MySQL数据库:

##将日志信息写入数据库###
log4j.appender.DB = org.apache.log4j.jdbc.JDBCAppender
##设置缓存大小,就是当有2条日志信息是才忘数据库插一次 如果只有1条,插不进去数据库的;
log4j.appender.DB.BufferSize=2
##设置要将日志插入到数据库的驱动
log4j.appender.DB.driver=com.mysql.jdbc.Driver
##URL 用户名 密码
log4j.appender.DB.URL=jdbc:mysql://192.168.61.28:3306/encysys48
log4j.appender.DB.user=encysys48
log4j.appender.DB.password=encysys48
log4j.appender.DB.Threshold = DEBUG
log4j.appender.DB.layout = org.apache.log4j.PatternLayout
###指定SQL语句在每次记录事件发生的时间执行。这可能是INSERT,UPDATE或DELETE
log4j.appender.DB.sql=insert into jp_fullnote1 (HF_SERIALID,HF_ORDERID,AGENT_ID,CHARGE_PHONE,CHARGE_SERIALID,PHONE_RESMONEY,CARD_PWD) values ('%X{userId}','%X{userName}','%C','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')

将日志信息 写入数据库的配置

Log4j 简介及初步应用的更多相关文章

  1. 【转】ibatis的简介与初步搭建应用

    [转]ibatis的简介与初步搭建应用 一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完 ...

  2. Log4j简介

    Log4J日志配置详解   一.Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和 ...

  3. 概述Log4j简介

    在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j. Log4j是Apache的一个开放源代码项目,通过使用Log4j ...

  4. Django Rest Framework 简介及 初步使用

    使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...

  5. Struts2简介、初步使用

    今日分享的是楼楼新学的一个框架,Struts2: 一:Struts2简介: Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2 ...

  6. Struts2简介以及初步搭建配置

    一.基本介绍 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. ...

  7. [Spring学习笔记 1 ] Spring 简介,初步知识--Ioc容器详解 基本原理。

    一.Spring Ioc容器详解(1) 20131105 1.一切都是Bean Bean可是一个字符串或者是数字,一般是一些业务组件. 粒度一般比较粗. 2.Bean的名称 xml配置文件中,id属性 ...

  8. Appium简介和初步使用520-1

    1.移动互联网架构简化图 2.Appium的优势 * 多种开发模式支持 native hybrid webview * 多平台支持 android ios * 跨语言 java python ruby ...

  9. org.apache.log4j.Logger详解

    org.apache.log4j.Logger 详解 1. 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工 ...

随机推荐

  1. 常用的HTTP状态码如下

    成功的状态码: – 服务器成功返回网页 – 未修改 失败的状态码: – 请求的网页不存在 – 服务器暂时不可用 – 服务器内部错误 下面的不是很常用,记住上面那几个就ok了,有bug了再补充 其他的状 ...

  2. 设置radio的选中状态

    $("#s7").click(function () { var a = document.getElementById("s7"); if (a.checke ...

  3. reshape2 数据操作 数据融合 (melt)

    前面一篇讲了cast,想必已经见识到了reshape2的强大,当然在使用cast时配合上melt这种强大的揉数据能力才能表现的淋漓尽致. 下面我们来看下,melt这个函数以及它的特点. melt(da ...

  4. 把嵌入在eclipse中的tomcat日志分离出来

    现象 不知道从哪个版本的tomcat开始,windows版本的tomcat不再包含{tomcat_home}\logs\catalina.out这个文件,eclipse中配置好tomcat服务器之后, ...

  5. Zeppelin使用phoenix解释器

    Interpreters设置

  6. hdu 1407 测试你是否和LTC水平一样高

    Description 大家提到LTC都佩服的不行,不过,如果竞赛只有这一个题目,我敢保证你和他绝对在一个水平线上! 你的任务是: 计算方程x^2+y^2+z^2= num的一个正整数解.  Inpu ...

  7. VS2010编译以前版本工程时 ERROR CVT1100:duplicate resource,type:MANIFEST解决办法

    1.将 Resource Files 里面的 *.exe.manifest 文件删除 2.右键选择 *.rc 文件,选择 view code,查找并删除所有引用 *.exe.manifest 文件的代 ...

  8. Spring测试

    测试类添加两个注解 @RunWith(SpringJUnit4ClassRunner.class)和@ContextConfiguration(locations = "classpath: ...

  9. python中的矩阵运算

    摘自:http://m.blog.csdn.net/blog/taxueguilai1992/46581861 python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入nu ...

  10. 关于maven相互依赖的工程部署问题

    环境:win7 64位,myeclipse10.6,eclipse4.5,都配置了svn插件 问题描述:1.工程模块化之后都是通过pom配置model来关联的,svn提交之后,通过myeclipse的 ...