使用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. Debug / Inspect WebSocket traffic with Fiddler【转】

    Introduction I have recently written a project using SignalR, which supports HTML 5 WebSocket.  Howe ...

  2. iOS开发传感器相关

    手机里面内置了很多的传感器,例如:光传感器,湿度传感器,温度传感器,距离传感器等等 //开发传感器相关的东西必须使用真机 //在螺旋仪和加速计所有两种方式push和pull的方式,push的方式是时时 ...

  3. 用户id有则更新,无则添加 使用replace into (代替 insert into)

    app登录成功后,调用后台,更新channel_id public function set_pushchannel($device,$channelid,$iv='' ) $sql = " ...

  4. a标签href跳转---传值---禁止单引号

    禁止加单引号1  href传参的值  (&t_type='航班') 错误 <a href="check_apply?applyid=<?=$applyid?>&am ...

  5. HUST 1352 Repetitions of Substrings(字符串)

    Repetitions of Substrings Description The “repetitions” of a string S(whose length is n) is a maximu ...

  6. 使用rdesktop远程连接Windows桌面

    之前使用的是KDE下的krdc.该程序的Grab Keys功能存在bug,导致Alt+TAB大多数时候不能被捕捉,从而无法使用键盘切换窗口.不过,其全屏功能是正常的,在多显示器的情况下,全屏只在一个屏 ...

  7. Matlab中矩阵的平方和矩阵中每个元素的平方介绍

    该文章讲述了Matlab中矩阵的平方和矩阵中每个元素的平方介绍.   设t = [2 4 2 4] 则>> t.^2 ans = 4 164 16 而>> t^2 ans = ...

  8. centos 10字母随机文件病毒清理

    病毒表现:网络流量暴满,疯狂地向香港的一个IP发数据,同时在top里面表现为随机的10位字母的进程,看/proc里面的信息,则为ls,cd之类常见的命令,CPU利用率也在top之首.杀死该进程后,会再 ...

  9. MediaWiki搭建教程

    ♦  MediaWiki是什么以及有什么作用,这里我就不再阐述了,网上可以查到很多.这里只是简单记录一下搭建wiki的基本过程,给一些热爱捯饬的小伙伴一些参考. ♦  其实wiki的搭建本身很简单,最 ...

  10. js几种基本数据类型及之间转换与java的不同、js数组一些常见操作

    js的三大组成部分及各自作用: 1.ECMAScript:规范了js的基本语法和功能 2.DOM:js操作页面元素的API 3.BOM:js操作浏览器部分功能的API 如果通过<script s ...