Welcome 微信登录

首页 / 操作系统 / Linux / Apache Log4j 学习笔记

Apache Logging Project Homepage: http://logging.apache.org Log4j的类图
     
  • Logger - 日志写出器,供程序员输出日志信息
  • Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去
    • ConsoleAppender - 目的地为控制台的Appender
    • FileAppender - 目的地为文件的Appender
    • RollingFileAppender - 目的地为大小受限的文件的Appender
  • Layout - 日志格式化器,用来把程序员的logging request格式化成字符串
    • PatternLayout - 用指定的pattern格式化logging request的Layout
Logger:日志写出器Logger对象是用来取代System.out或者System.err的日志写出器,用来供程序员输出日志信息。Logger的输出方法Logger类对象提供一系列方法供程序员输出日志信息:
  • public void debug(Object msg);
  • public void debug(Object msg, Throwable t);
  • public void info(Object msg);
  • public void info(Object msg, Throwable t);
  • public void warn(Object msg);
  • public void warn(Object msg, Throwable t);
  • public void error(Object msg);
  • public void error(Object msg, Throwable t);
  • public void fatal(Object msg);
  • public void fatal(Object msg, Throwable t);
Logger的命名规则Logger由一个String类的名字识别,logger的名字是大小写敏感的,且名字之间具有继承的关系,子名有父名作为前缀,用点号.分隔。如:x.y是x.y.z的父亲。根logger (root logger)是所有logger的祖先,它具有如下属性:1)它总是存在的;2)它不可以通过名字获得。通过调用public static Logger Logger.getRootLogger()获得root logger;通过调用public static Logger Logger.getLogger(String name)或者public static Logger Logger.getLogger(Class clazz)获得(或者创建)一个named logger。后者相当于调用Logger.getLogger(clazz.getName())。在某对象中,用该对象所属的类为参数,调用Logger.getLogger(Class clazz)以获得logger被认为是目前所知的最理智的命名logger的方法。Log level每个logger都被分配了一个日志级别 (log level),用来控制日志信息的输出。未被分配level的logger将继承它最近的父logger的level。每条输出到logger的日志请求(logging request)也都有一个level,如果该request的level大于等于该logger的level,则该request将被处理(称为enabled);否则该request将被忽略。故可得知:
  • logger的level越低,表示该logger越详细
  • logging request的level越高,表示该logging request越优先输出
Level类中预定义了五个level,它们的大小关系如下:Level.ALL < Level.DEBUG < Level.INFO < Level.WARN < Level.ERROR < Level.FATAL < Level.OFF示例代码以下代码将用自己所属的类为参数,创建一个logger,启用默认配置,设置其level并向其输出若干logging request。<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->import org.apache.log4j.Logger;
import
 org.apache.log4j.BasicConfigurator;
import
 org.apache.log4j.Level;

public class
 Log4jTest {

    public static void
 main(String argv[]) {

        // Create a logger by the name of class Log4jTest.

        Logger logger = Logger.getLogger(Log4jTest.class);
        // Use the default configuration.

        BasicConfigurator.configure();
        // Set the logger level to Level.INFO

        logger.setLevel(Level.INFO);
        // This request will be disabled since Level.DEBUG < Level.INFO.

        logger.debug("This is debug.");
        // These requests will be enabled.

        logger.info("This is an info.");
        logger.warn("This is a warning."
);
        logger.error("This is an error."
);
        logger.fatal("This is a fatal error."
);

    }

}
关于logger的两点说明
  • 用同名参数调用Logger.getLogger(String name)将返回同一个logger的引用。故可以在一个地方配置logger,在另外一个地方获得配置好的logger,而无须相互间传递logger的引用。
  • logger的创建可以按照任意的顺序,即,父logger可以后于子logger被创建。log4j将自动维护logger的继承树。
  • 1
  • 2
  • 3
  • 4
  • 下一页
Maven 5 分钟入门教程Linux下搭建JavaEE开发环境相关资讯      Apache 
  • Linux+Apache+PHP+Oracle 基础环境  (11/23/2015 10:40:55)
  • Apache httpd 2.4.17 发布下载  (10/14/2015 08:57:55)
  • Apple MacBook搭建Apache多站点  (07/08/2015 09:41:46)
  • 聊聊 Apache 开源协议  (11/23/2015 10:13:05)
  • Ubuntu 14.04下 Apache修改网站根  (07/29/2015 07:10:18)
  • 25 个有用 Apache ‘.htaccess’   (07/01/2015 18:44:01)
本文评论 查看全部评论 (0)
表情: 姓名: 字数