【转】使用Log4j为项目配置日志输出应用详细总结及示例演示.
log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 ... log4j.appender.appenderName.option = valueN
Log4j提供的appender有以下几种:
?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="appender1" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="logfile08.html" /> <param name="MaxFileSize" value="1MB" /> <param name="MaxBackupIndex" value="5" /> <layout class="org.apache.log4j.HTMLLayout"> </layout> </appender> <root> <level value="debug" /> <appender-ref ref="appender1" /> </root></log4j:configuration>
1 package org.demo.log4j.dennisit; 2 3 import java.io.IOException; 4 5 import org.apache.commons.logging.impl.Log4JLogger; 6 import org.apache.log4j.BasicConfigurator; 7 import org.apache.log4j.FileAppender; 8 import org.apache.log4j.Layout; 9 import org.apache.log4j.Level;10 import org.apache.log4j.Logger;11 import org.apache.log4j.SimpleLayout;12 13 /**14 *15 * @version : 1.116 * 17 * @author : 苏若年 <a href="mailto:DennisIT@163.com">发送邮件</a>18 * 19 * @since : 1.0 创建时间: 2013-1-1 下午03:19:4220 * 21 * @function: 通过代码将日志输出22 *23 */24 25 public class Log4jPrintByCode {26 27 private static Logger logger = Logger.getLogger(Log4jPrintByCode.class);28 29 private Layout layout = new SimpleLayout();30 private FileAppender fileAppender;31 32 33 //使用构造依赖,创建对象时初始化34 public Log4jPrintByCode(Layout layout, Level level,String distDir){35 36 BasicConfigurator.configure(); //使用默认的配置信息,不需要写log4j.properties37 38 try {39 init(layout,level, distDir);40 } catch (Exception e) {41 e.printStackTrace();42 }43 44 }45 46 47 public void init(Layout layout, Level level,String distDir) throws Exception{48 49 logger.setLevel(level); //设置日志输出级别50 fileAppender = new FileAppender(layout,distDir,false);51 logger.addAppender(fileAppender); //添加输出端52 53 }54 55 56 public static void main(String[] args) {57 58 SimpleLayout layout = new SimpleLayout();59 String logDir = "log4jcode.Log";60 Log4jPrintByCode log4jCode = new Log4jPrintByCode(layout,Level.INFO,logDir);61 62 63 //下面信息将被输出64 log4jCode.logger.info("log info print by log4j");65 log4jCode.logger.warn("log warn print by log4j");66 log4jCode.logger.error("log error print by log4j");67 68 }69 70 71 public Layout getLayout() {72 return layout;73 }74 75 public void setLayout(Layout layout) {76 this.layout = layout;77 }78 79 public FileAppender getFileAppender() {80 return fileAppender;81 }82 83 public void setFileAppender(FileAppender fileAppender) {84 this.fileAppender = fileAppender;85 }86 87 88 89 }
// 记录debug级别的信息if (logger.isDebugEnabled()) { logger.debug("This is debug message from Dao.");}// 记录info级别的信息if (logger.isInfoEnabled()) { logger.info("This is info message from Dao.");}
/* 创建数据库 */ create database db_log4j;/* 切换数据库 */use db_log4j;/* 日志信息表 */create table tb_log( logId int not null auto_increment comment '流水号' , createDate varchar(45) default null comment '日志生成时间' , thread varchar(45) default null comment '当前线程', level varchar(45) default null comment '当前日志级别' , class varchar(45) default null comment '生成日志的类', message varchar(245) default null comment '日志具体信息', primary key(logId));
#定义3个输出端log4j.rootCategory=INFO,A1,A2,A3#定义A1输出到控制器log4j.appender.A1=org.apache.log4j.ConsoleAppender#定义A1的布局模式为PaternLayoutlog4j.appender.A1.layout=org.apache.log4j.PatternLayout# 定义A1的输出格式log4j.appender.A1.layout.ConversionPattern=%4p [%t] (%F:%L) - %m%n#定义A2输出到文件log4j.appender.A2=org.apache.log4j.RollingFileAppender#定义A2输出到哪个文件log4j.appender.A2.File=./log/sysLog.log#定义A2输出文件的最大长度log4j.appender.A2.MaxFileSize = 1KB#定义A2的备份文件数log4j.appender.A2.MaxBackupIndex = 3#定义A2的布局模式为PatternLayoutlog4j.appender.A2.layout=org.apache.log4j.PatternLayout#定义A2的输出模式log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n#定义A3输出到数据库log4j.appender.A3=org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.A3.URL=jdbc:mysql://localhost:3306/db_log4jlog4j.appender.A3.driver=com.mysql.jdbc.Driverlog4j.appender.A3.user=rootlog4j.appender.A3.password=root#定义A3的布局和执行的SQL语句log4j.appender.A3.layout=org.apache.log4j.PatternLayoutlog4j.appender.A3.layout.ConversionPattern=INSERT INTO tb_log(createDate,thread,level,class,message) values('%d','%t','%-5p','%c','%m')
package org.demo.log4j.dennisit;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;/** * * @version : 1.1 * * @author : 苏若年 <a href="mailto:DennisIT@163.com">发送邮件</a> * * @since : 1.0 创建时间: 2013-1-1 下午04:13:59 * * @function: 通过配置文件控制日志信息输出到多个目的端 * */public class Log4jPrintByConfigure { private static Logger logger = Logger.getLogger(Log4jPrintByConfigure.class); public static void main(String[] args) throws Exception { //加载log配置文件log4j.properties PropertyConfigurator.configure("configure/log4j.properties");//文件存放在src同目录的configure文件夹下 //如果放在src下的话,参数应为"bin/log4j.properties"或者"src/log4j.properties", 建议以bin为准 //以下信息将被打印输出 logger.debug("logger print DEBUG messgae"); logger.info("logger print INFO message"); logger.warn("logger print WARN message"); logger.error("logger print ERROR message"); logger.fatal("Here is FATAL message"); }}
?
转载请注明出处[http://www.cnblogs.com/dennisit/archive/2013/01/01/2841603.html]