首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

【转】使用Log4j替项目配置日志输出应用详细总结及示例演示

2013-12-17 
【转】使用Log4j为项目配置日志输出应用详细总结及示例演示.log4j.appender.appenderName fully.qualified

【转】使用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]

热点排行