使用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. 使用PhotoShop

    详细请看:http://blog.sina.com.cn/s/blog_73dc36510101ahim.html

  2. IOS开发小技巧,知识点

    1.IOS模拟器第一次打开需要进入“设置”中关掉"Auto-Capitalization"选项. 2.NSInteger转化 NSString类型: [NSString strin ...

  3. hdu2141AC代码分享

    #include <iostream> #include <algorithm> using namespace std; const int N = 505; /////// ...

  4. 驱动力—— 通信引擎(上)—— ESFramework 4.0 进阶(03)

    在ESFramework 4.0 进阶(02)-- 核心:消息处理的骨架流程一文中我们详细介绍了ESFramework中消息处理的骨架流程,并且我们已经知道,ESFramework中的所有通信引擎使用 ...

  5. NHibernate初步使用

    1.创建一个网站项目:QuickStart 2.引用程序集:NHibernate.dll 3.更改配置文件加入以下节点: <configSections> <section name ...

  6. 创建透明CEdit控件

    1.在资源编辑器中将Edit控件的Border设为none(当然也可以在代码中修改窗口样式) 2.在重载CEdit的类中响应MSG_OCM_CTLCOLOREDIT消息,在处理函数中将背景模式设为透明 ...

  7. id和instancetype的异同

    相同点: 都可以作为方法返回值类型 在initWithName:方法中是一样的,例如: - (id)initWithName:(NSString *)name; - (instancetype)ini ...

  8. maven入门(下)

    Apache Maven 入门篇(下) 作者:George Ma 第一篇文章大概的介绍了一下Apache Maven以及它的下载和安装,并且运行了一个简单的示例.那么在对maven有了一点接触后,接下 ...

  9. SQL Server服务开闭

    SQL Server(MSSQLSERVER)是必须要开启的,这个是数据库引擎服务,就像汽车的发动机一样. SQL Server代理(MSSQLSERVER)是代理服务,比如你有一些自动运行的,定时作 ...

  10. ios日期时间

    //1.获取当前时间 -(NSString*)getCurrentTime { NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; ...