Log4j详细介绍(五)----输出地Appender
2013-06-07 21:03
281 查看
Appender表示日志输出到什么地方,常用的输出地有控制台,文件,数据库,远程服务器等。Log4j中内置了常用的输出地,一般情况下配置一下即可使用。所有的Appender都实现自org.apache.log4j.Appender借口。在log4j.properties中,Apender都使用log4j.appender.*配置
输出到控制台
控制台是最常用的输出地,前面的例子用的就是控制台输出(ConsoleAppender)。控制台输出实现类为org.apache.log4j.ConsoleAppender,例如:
控制台输出需要配置layout属性,最常用的是正则表达式。控制台输出的信息一般是TRACE,DEBUG或者INFO级的,只有在开发,调试时才启用。
Threshold用来设置该Appender的级别,只对该Appender生效。所有的Appender都可通过设置Threshold来设置本Appender的启用级别
输出到文件:
文件输出(FileAppender)把日志输出到指定的文件。文件输出的实现类为org.apache.log4j.FileAppender,配置时需要File指定文件名称。可以使用相对路径,也可以使用绝对路径例如:
可选参数Append配置是否在原文件内容的基础上追加日志。如果为false,Logger 初始化时会先清掉文件内容,也就是说每次重启程序,原来的日志会丢失。如果为true,日志文件会越来越大。默认为true
输出到按大小滚动文件
按大小滚动文件输出(RollingFileAppender)吧日志输出到指定的文件,文件达到指定大小时,会自动更名。按尺寸滚动文件输出类为org.apache.log4j.RollingFileAppender,需要配置文件名称,文件的最大尺寸,例如:
配置的滚动文件名为rolling.log,文件最大为10KB。当rolling.log达到10KB时,会自动更名为rolling.log1,rolling.log2,rolling.log3………………知道rolling.log100。
Logger支持多个Appender,用逗号讲多个Appender名字隔开即可。
输出到按日期滚动文件
按日期滚动文件输出(DailyRollingFileAppender)将日志输出到指定的文件,当日期发生变化时,会自动按指定的日期格式自动改名。日期滚动文件输出类为org.apache.log4j.DailyRollingFileAppender,例如:
日志文件名称为daily_rolling.log,日期格式为 yyyy-MM-dd。进入新的一天后,文件会被自动更名,格式为daily_rolling.log.2013-06-06。
输出到JDBC数据库
数据库输出(JDBCAppender),通过JDBC链接把日志输出到数据库中,配置时需要配置JDBC驱动,连接字符串,用户名,密码以及SQL语句。注意JDBCAppender需要相应的数据库驱动。先创建数据库,并建立数据库日志表。本例使用MySQL数据库,脚本如下:
配置JDBCAppender的代码如下:log4j.properties
配置的关键是SQL语句。Log4j能够取到各种环境数据,包括时间,级别,类名,文件名,方法名,所在行数等。具体详见后面的格式化器Layout。SQL八个参数对应到日志表的相关列中。运行代码如下:
运行效果如下:
注意:JDBC输出可能会因为短时间内大量的连接数据库而导致连接失败,因此要谨慎使用JDBC输出
输出到控制台
控制台是最常用的输出地,前面的例子用的就是控制台输出(ConsoleAppender)。控制台输出实现类为org.apache.log4j.ConsoleAppender,例如:
#跟记录器,ERROR,输出到A1 log4j.rootLogger=ERROR, A1 #本记录器为DEBUG级别 log4j.category.com.log4j.test=DEBUG #控制台输出 log4j.appender.A1=org.apache.log4j.ConsoleAppender #DEBUG以上级别是输出 log4j.appender.A1.Threshold=DEBUG #编码方式 log4j.appender.A1.Encoding=UTF-8 #是否立即输出 log4j.appender.A1.ImmediateFlush=true #使用System.err输出 log4j.appender.A1.Target=System.err #输出格式,表达式配置 log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.ConversionPattern=%-d{yyyy-MM-d HH:mm:ss, SSS}[%C]-[%p] %m%n
控制台输出需要配置layout属性,最常用的是正则表达式。控制台输出的信息一般是TRACE,DEBUG或者INFO级的,只有在开发,调试时才启用。
Threshold用来设置该Appender的级别,只对该Appender生效。所有的Appender都可通过设置Threshold来设置本Appender的启用级别
输出到文件:
文件输出(FileAppender)把日志输出到指定的文件。文件输出的实现类为org.apache.log4j.FileAppender,配置时需要File指定文件名称。可以使用相对路径,也可以使用绝对路径例如:
log4j.logger.com.log4j.test.Log4jTest=DEBUG, F #输出到文件 log4j.appender.F=org.apache.log4j.FileAppender #文件位置 log4j.appender.F.File=C:\\log4j.log #追加文件内容 log4j.appender.F.Append=true #输出格式表达式 log4j.appender.F.layout=org.apache.log4j.PatternLayout log4j.appender.F.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n
可选参数Append配置是否在原文件内容的基础上追加日志。如果为false,Logger 初始化时会先清掉文件内容,也就是说每次重启程序,原来的日志会丢失。如果为true,日志文件会越来越大。默认为true
输出到按大小滚动文件
按大小滚动文件输出(RollingFileAppender)吧日志输出到指定的文件,文件达到指定大小时,会自动更名。按尺寸滚动文件输出类为org.apache.log4j.RollingFileAppender,需要配置文件名称,文件的最大尺寸,例如:
#DEBUG 级别,两个输出:文件与滚动文件 log4j.rootLooger=DEBUG, F, Rolling_File #输出到文件 log4j.appender.F=org.apache.log4j.FileAppender log4j.appender.F.File=C:\\F.log log4j.appender.F.Appender=true log4j.appender.F.layout=org.apache.log4j.PatternLayout log4j.appender.F.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n #输出到滚动文件 log4j.appender.Rolling_File=org.apache.log4j.RollingFileAppender #DEBUG以上才使用 log4j.appender.Rolling_File.Threshold=DEBUG #滚动文件名 log4j.appender.Rolling_File.File=C:\\rolling.log #追加方式 log4j.appender.Rolling_File.Append=true #文件达到10KB就自动命名 log4j.appender.Rolling_File.MaxFileSize=10KB #最多备份100个文件 log4j.appender.Rolling_File.MaxBackupIndex=100 log4j.appender.Rolling_File.layout=org.apache.log4j.PatternLayout log4j.appender.Rolling_File.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n
配置的滚动文件名为rolling.log,文件最大为10KB。当rolling.log达到10KB时,会自动更名为rolling.log1,rolling.log2,rolling.log3………………知道rolling.log100。
Logger支持多个Appender,用逗号讲多个Appender名字隔开即可。
输出到按日期滚动文件
按日期滚动文件输出(DailyRollingFileAppender)将日志输出到指定的文件,当日期发生变化时,会自动按指定的日期格式自动改名。日期滚动文件输出类为org.apache.log4j.DailyRollingFileAppender,例如:
#DEBUG 级别,两个输出:文件与滚动文件 log4j.rootLooger=DEBUG, Daily_Rolling #输出到滚动文件 log4j.appender.Daily_Rolling=org.apache.log4j.Daily_RollingFileAppender #DEBUG以上才使用 log4j.appender.Daily_Rolling.Threshold=DEBUG #滚动文件名 log4j.appender.Daily_Rolling.File=C:\\daily_rolling.log #追加方式 log4j.appender.Daily_Rolling.Append=true #滚动日期格式 log4j.appender.Daily_Rolling.DatePattern=.yyyy-MM-dd # 输出日期格式 log4j.appender.Daily_Rolling.layout=org.apache.log4j.PatternLayout log4j.appender.Daily_Rolling.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n
日志文件名称为daily_rolling.log,日期格式为 yyyy-MM-dd。进入新的一天后,文件会被自动更名,格式为daily_rolling.log.2013-06-06。
输出到JDBC数据库
数据库输出(JDBCAppender),通过JDBC链接把日志输出到数据库中,配置时需要配置JDBC驱动,连接字符串,用户名,密码以及SQL语句。注意JDBCAppender需要相应的数据库驱动。先创建数据库,并建立数据库日志表。本例使用MySQL数据库,脚本如下:
create database log4j; use log4j; create table tb_log(id int primary key auto_increment, date varchar(255), priority varchar(255), message text, classname varchar(255));
配置JDBCAppender的代码如下:log4j.properties
#配置rootLogger为ALL级别,输出地位DATABASE log4j.rootLogger= ALL, DATABASE #数据库输出 log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender log4j.appender.DATABASE.Threshold=DEBUG #数据库连接URL log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/log4j #数据库驱动 log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver #用户名 log4j.appender.DATABASE.user=root #用户密码 log4j.appender.DATABASE.password=password #执行SQL语句,列内容为表达式 log4j.appender.DATABASE.sql=insert into tb_log(date, priority, message, classname) values('%d', '%p', '%m', '%c') #输出格式 log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n
配置的关键是SQL语句。Log4j能够取到各种环境数据,包括时间,级别,类名,文件名,方法名,所在行数等。具体详见后面的格式化器Layout。SQL八个参数对应到日志表的相关列中。运行代码如下:
import org.apache.log4j.Logger; public class Log4jJDBCTest { public static Logger log = Logger.getLogger(Log4jJDBCTest.class); public static void main(String[] args) { log.trace("trace信息"); log.debug("debug信息"); log.info("info信息"); log.warn("warn信息"); log.error("errof信息"); log.fatal("fatal信息"); try { String s = null; s.length(); } catch (Exception e) { log.trace("trace一个异常", e); log.debug("debug一个异常", e); log.info("info一个异常", e); log.warn("warn一个异常", e); log.error("error一个异常", e); log.fatal("fatal一个异常", e); } } }
运行效果如下:
注意:JDBC输出可能会因为短时间内大量的连接数据库而导致连接失败,因此要谨慎使用JDBC输出
相关文章推荐
- Log4j详细介绍(五)----输出地Appender
- Log4j详细介绍(六)----自定义输出
- JAVA异常处理原则和log4j输出详细异常分析
- Log4j 的详细介绍
- log4j文件的配置的详细介绍
- log4j文件的配置的详细介绍
- Log4j自定义Appender介绍
- Log4j自定义Appender介绍
- 详解log4j2(下) - Async/MongoDB/Flume Appender 按日志级别区分文件输出
- Log4j日志输出详细
- Log4j具体级别及输出信息配置方法介绍
- Log4j 2.0在开发中的高级使用详解—SocketAppender的远程输出(五)
- 使用Log4j为项目配置日志输出应用详细总结及示例演示.
- C++标准库之中文输出详细介绍
- Log4j日志输出详细
- Log4j详细介绍(二)----Commons-logging控件
- log4j的properties详细配置,分级输出日志文件
- 使用Log4j为项目配置日志输出应用详细总结及示例演示.
- Log4J日志配置详解 一、Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方
- log4j的log4j.properties文件配置的详细介绍