关闭

Log4J

标签: log4jimportpropertiesstringjavalayout
811人阅读 评论(0) 收藏 举报
分类:
Log4j文档
 
Log4j由三个重要的件构成:日志信息的,日志信息的出目的地,日志信息的出格式。日志信息的从高到低有ERRORWARNINFODEBUG,分用来指定条日志信息的重要程度;日志信息的出目的地指定了日志将打印到控制台是文件中;而出格式控制了日志信息的示内容
 
一、       配置文件
 Log4j支持两配置文件格式,Java特性文件(properties格式的属性文件)XML格式的文件
 
1.    Java特性文件(properties格式的属性文件)配置文件
 Java特性文件也位于WEB-INF/classes目录下,下面是一个Java特性文件(properties格式的属性文件)的例子:
 
 

# For JBoss: Avoid to setup log4j outside $JBOSS_HOME/server/default/deploy/log4j.xml
# For all other servers: Comment out the Log4J listener in web.xml too
 
log4j.configuration=log4j.properties
 
log4j.rootCategory=info, stdout, logfile
 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
 
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=D:/temp/SpringMVC.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files
log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
# Pattern to output: date priority [category] - <message>line_separator
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n
 
#log4j.logger.com.opensymphony.oscache=ERROR
#log4j.logger.net.sf.navigator=ERROR
#log4j.logger.org.apache.commons=ERROR
#log4j.logger.org.apache.struts=WARN
#log4j.logger.org.displaytag=ERROR
log4j.logger.org.springframework=WARN
#log4j.logger.com.ibatis.db=WARN

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  Tomcat服务器启动时自动加载.properties配置文件。
其中,
log4j.configuration=log4j.properties 指定配置文件的名字
log4j.rootCategory= [ level ] , appenderName, appenderName, …是配置根Logger

level 是日志记录,分OFFFATALERRORWARNINFODEBUGALL或者您定级别Log4j只使用四个级别从高到低分ERRORWARNINFODEBUG。通里定级别,您可以控制到用程序中相应级别的日志信息的开关。比如在里定INFO级别则应用程序中所有DEBUG级别的日志信息将不被打印出来,默认日志级别是ERRORappenderName就是指定Appender组件,确定日志输出目的地如上例:log4j.rootCategory=info, stdout, logfile 配置根Logger的级别是INFO,日志输出的目的地是stdout, logfile

 
    log4j.appender. appenderName =org.apache.log4j.ConsoleAppender配置日志信息出目的地Appender

 Log4j提供的appender有以下几
  org.apache.log4j.ConsoleAppender(控制台),
  org.apache.log4j.FileAppender(文件),
  org.apache.log4j.DailyRollingFileAppender生一个日志文件),
  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的生一个新的文件),
  org.apache.log4j.WriterAppender(将日志信息以流格式送到任意指定的地方

 
   log4j.appender.appenderName.layout=org.apache.log4j.PatternLayout 配置日志信息的格式(布局)

  Log4j提供的layout有以下几
  org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  org.apache.log4j.TTCCLayout(包含日志生的时间线程、类别等等信息

 
   log4j.appender. appenderName.layout.ConversionPattern=%d %p [%c] - <%m>%n 是设置打印格式格式化日志信息。

打印参数如下:
%m 出代中指定的消息
%p ,即DEBUGINFOWARNERRORFATAL
%r
出自用启log信息耗的毫秒数
%c
出所属的目,通常就是所在的全名
%t
日志事件的线程名
%n
出一个回车换行符,Windows平台“/r/n”Unix平台“/n”
%d
出日志时间点的日期或时间,默格式ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS}似:20021018 221028921
%l
出日志事件的生位置,包括目名、生的线程,以及在代中的行数。例:Testlog4.main(TestLog4.java:10)

 
  如果log4j.appender. appenderName属性配置的日志输出目的地是一个文件是,还有以下属性:

    log4j.appender. appenderName.File=D:/temp/SpringMVC.log 配置日志文件的名称。即存放日志的文件。
    log4j.appender. appenderName.MaxFileSize=512KB 配置日志文件的大小,最大可以设置为10M
    log4j.appender. appenderName.MaxBackupIndex=3 配置可有日志文件的个数。

 
 Log4j.logger<.logger.name>= level 指定Logger.name这个记录器的级别。即,logger只输出这个级别或高出这个级别的日志。如: 

log4j.logger.org.springframework=WARN 是配置Logger只输出关于org.springframeworkWARN级别的日志和ERRORFATAL级别的日志。
    log4j.logger.org.displaytag=ERROR 是配置Logger只输出关于displaytagERROR FATAL级别的日志。

 
  如果将日志以邮件的形式发送出去时得有以下属性:

log4j.appender.mail=org.apache.log4j.net.SMTPAppender 配置日志输出目的地是电子邮箱
log4j.appender.mail.To= lmbussiness@hotmail.com        设置日志将要输出到的电子邮箱
log4j.appender.mail.From=localhost@raibledesignes.com 设置发送日志信息的电子邮箱
log4j.appender.mail.SMTPHost=localhost             置运行SMTP程序的主机的IP地址名称
log4j.appender.mail.Threshold=ERROR                设置记录日志的最低级别
log4j.appender.mail.BufferSize=1                   设置写邮件的缓存大小
log4j.appender.mail.Subject=[localhost]dlhitech Application Error  设置电子邮件标题

     如果将日志出到数据日志表有以下属性:

log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender    配置日志输出目的地是数据库
log4j.appender.DATABASE.URL
=jdbc:oracle:thin:@192.168.1.10:1521:SCSORA   配置连接数据库的url
log4j.appender.DATABASE.driver=
oracle.jdbc.drivers.OracleDrivers       配置连接数据库的驱动器
log4j.appender.DATABASE.user=
newsinfo                                 配置连接数据库的用户名
log4j.appender.DATABASE.password
=newsinfo                             配置连接数据库的密码
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
                                   设置插入语句
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
    配置日志信息的格式(布局)
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
                                                       设置打印格式格式化日志信息。

 
 
2.XML格式的文件作为配置文件
 下面是一个XML格式的文件作为配置文件的例子:
  

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
       
   <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
     <param name="threshold" value="error"/>
     <layout class="org.apache.log4j. PatternLayout">
       <param name="Conversion" value="%d{(yyyyMMdd-HHmmss)} %p [%c] - <%m>%n "/>
</layout>
  </appender>
  
   <appender name="rollingFile.log" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value=" D:/temp/SpringMVC.log " />
<param name="threshold" value="info"/>
    <param name="Append" value="false" />
     <param name="MaxBackupIndex" value="2" />
     <param name="MaxFileSize" value="1024" />
    <layoutclass="org.apache.log4j.PatternLayout" >
       <param name=" ConversionPattern " value="%d [%t] %p - %m%n" />
     </layout>
    <!-- 实现过滤功能,用这个标签,当往这个指定文件记录日志时只记录指定级别的日志,别的不记录
Filter标签只能在xml配置文件好用,在.properties属性文件中不好用-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
      <param name="LevelMin"      value="ERROR"/>
      <param name="LevelMax"     value="ERROR"/>
      <param name="acceptOnMatch" value="TRUE"/>
    </filter>
  </appender>
<!—封装apache ,这样,可以在java程序中的
Category cat2 = Category.getInstance("your.category.name");来进行输出日志-->
<category name="org.apache">      --设置封装的名称
<priority value="info" />     --输出指定级别的日志
<appender-ref ref="aplog"/>   --设置输出的目的地
</category>
<root>
     <level value ="debug" />
     <appender-ref ref="ConsoleAppender"/>
<appender-ref ref=" rollingFile.log "/> <!-- 经过过滤只记录error级别的日志 -->
  </root>
</log4j:configuration>

 
 
二.调用Log4j来输出日志
 通过访问通用日志接口和在java程序手动打开配置文件都可以进行日志的输出。其中,通过访问通用日志接口来指定日志器时,Log4j的配置文件只能是java特定文件(.properties属性文件)
 
1.通过访问通用日志接口来输出日志
 Tomcat服务器启动时,通用日志接口从名为“commons-logging.properties”的属性文件中获取实现日志接口日志器信息,这个文件位于WEB-INF/classes目录下。“commons-logging.properties”属性文件的内容:
 

 
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog
 

 Tomcat服务器运行时,通用日志接口会检索commons-logging.properties文件,并且实例化由“org.apache.commons.logging.Log”属性指定的日志实现例。上面给的日志器是Log4J日志器。
 Tomcat服务器会自动加载.properties配置文件。
 调用Log4j输出日志 如下例:

  import org.apache.commons.logging.Log;
  
public class Test{
      public static void main(args[] String){
    Log logger = LogFactory.getLog(“test”);
    logger.info("开始操作");
    int a = 5;
    int b = 6;
    System.out.println(a+b);
    logger.info("操作完毕");
}
}

 
2.手动打开配置文件输出日志
 程序员用手动打开配置文件来输出日志时,得先打开配置文件然后才能进行输出日志操作。由于Log4J的配置文件可以是java特性文件(.properties属性文件).xml文件,所以打开配置文件的方式就不相同。当配置文件是java特性文件(.properties属性文件)时,打开配置文件的方法是:

 
PropertyConfigurator.configure ( String configFilename);
 

当配置文件是.xml文件时,打开配置文件的方法是:

 
DOMConfigurator.configure ( String filename );
 

当打开配置文件后,配置文件就一直打开着,所以配置文件就打开一遍就可以了。
 打开配置文件后,构造Logger对象然后输出日志信息,以配置文件是.xml文件为例,输出信息实例如下:

 
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;  
public class Test{
      public static void main(args[] String){
          DOMConfigurator.configure ( String filename )
          Logger logger = Logger.getRootLogger();
          logger.info("开始操作");
          int a = 5;
          int b = 6;
         System.out.println(a+b);
         logger.info("操作完毕");
}
}

 
2.不通过配置文件手动输出日志
 使用Log4J来输出日志不一定非得通过配置文件来输出日志,也可以不通过配置文件来输出日志,手动在程序中创建AppenderLayout等对象,只不过这样做会在java程序用留下很大的代码量。下面是一个不通过配置文件手动输出日志的实例,程序实现PatternLayoutFileAppender

     import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.FileAppender;
public class simpandfile {
         static Logger logger = Logger.getLogger(simpandfile.class);
         public static void main(String args[]) {
           String pattern = "Milliseconds since program start: %r %n";
                   pattern += "Classname of caller: %C %n";
                   pattern += "Date in ISO8601 format: %d{ISO8601} %n";
                   pattern += "Location of log event: %l %n";
                   pattern += "Message: %m %n %n";
           PatternLayout layout = new PatternLayout(pattern);
           FileAppender appender = null;
             try {
                 appender = new FileAppender(layout,"output1.txt",false);
              } catch(Exception e) {}
              logger.addAppender(appender);
              logger.setLevel((Level) Level.DEBUG);
              logger.debug("Here is some DEBUG");
              logger.info("Here is some INFO");
              logger.warn("Here is some WARN");
              logger.error("Here is some ERROR");
              logger.fatal("Here is some FATAL");
        }
}
 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15293次
    • 积分:285
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章分类