Log4j 简介及初步应用
使用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
自定义格式输出的参数格式含义:
格式名 含义
- %c 输出日志信息所属的类的全名
- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
- %f 输出日志信息所属的类的类名
- %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行 (Log4JInitServlet.init(Log4JInitServlet.java:31))类名.函数名
- %m 输出代码中指定的信息,如log(message)中的message
- %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
- %r 输出自应用启动到输出该日志信息所耗费的毫秒数
- %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 简介及初步应用的更多相关文章
- 【转】ibatis的简介与初步搭建应用
[转]ibatis的简介与初步搭建应用 一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完 ...
- Log4j简介
Log4J日志配置详解 一.Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和 ...
- 概述Log4j简介
在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j. Log4j是Apache的一个开放源代码项目,通过使用Log4j ...
- Django Rest Framework 简介及 初步使用
使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...
- Struts2简介、初步使用
今日分享的是楼楼新学的一个框架,Struts2: 一:Struts2简介: Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2 ...
- Struts2简介以及初步搭建配置
一.基本介绍 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. ...
- [Spring学习笔记 1 ] Spring 简介,初步知识--Ioc容器详解 基本原理。
一.Spring Ioc容器详解(1) 20131105 1.一切都是Bean Bean可是一个字符串或者是数字,一般是一些业务组件. 粒度一般比较粗. 2.Bean的名称 xml配置文件中,id属性 ...
- Appium简介和初步使用520-1
1.移动互联网架构简化图 2.Appium的优势 * 多种开发模式支持 native hybrid webview * 多平台支持 android ios * 跨语言 java python ruby ...
- org.apache.log4j.Logger详解
org.apache.log4j.Logger 详解 1. 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工 ...
随机推荐
- Debug / Inspect WebSocket traffic with Fiddler【转】
Introduction I have recently written a project using SignalR, which supports HTML 5 WebSocket. Howe ...
- iOS开发传感器相关
手机里面内置了很多的传感器,例如:光传感器,湿度传感器,温度传感器,距离传感器等等 //开发传感器相关的东西必须使用真机 //在螺旋仪和加速计所有两种方式push和pull的方式,push的方式是时时 ...
- 用户id有则更新,无则添加 使用replace into (代替 insert into)
app登录成功后,调用后台,更新channel_id public function set_pushchannel($device,$channelid,$iv='' ) $sql = " ...
- a标签href跳转---传值---禁止单引号
禁止加单引号1 href传参的值 (&t_type='航班') 错误 <a href="check_apply?applyid=<?=$applyid?>&am ...
- HUST 1352 Repetitions of Substrings(字符串)
Repetitions of Substrings Description The “repetitions” of a string S(whose length is n) is a maximu ...
- 使用rdesktop远程连接Windows桌面
之前使用的是KDE下的krdc.该程序的Grab Keys功能存在bug,导致Alt+TAB大多数时候不能被捕捉,从而无法使用键盘切换窗口.不过,其全屏功能是正常的,在多显示器的情况下,全屏只在一个屏 ...
- Matlab中矩阵的平方和矩阵中每个元素的平方介绍
该文章讲述了Matlab中矩阵的平方和矩阵中每个元素的平方介绍. 设t = [2 4 2 4] 则>> t.^2 ans = 4 164 16 而>> t^2 ans = ...
- centos 10字母随机文件病毒清理
病毒表现:网络流量暴满,疯狂地向香港的一个IP发数据,同时在top里面表现为随机的10位字母的进程,看/proc里面的信息,则为ls,cd之类常见的命令,CPU利用率也在top之首.杀死该进程后,会再 ...
- MediaWiki搭建教程
♦ MediaWiki是什么以及有什么作用,这里我就不再阐述了,网上可以查到很多.这里只是简单记录一下搭建wiki的基本过程,给一些热爱捯饬的小伙伴一些参考. ♦ 其实wiki的搭建本身很简单,最 ...
- js几种基本数据类型及之间转换与java的不同、js数组一些常见操作
js的三大组成部分及各自作用: 1.ECMAScript:规范了js的基本语法和功能 2.DOM:js操作页面元素的API 3.BOM:js操作浏览器部分功能的API 如果通过<script s ...