zoukankan      html  css  js  c++  java
  • Log4j 汇总

    一、概念

    .1.
      log4j是 是线程安全的 日志框架,高度可配置,可通过在运行时的外部文件配置。
      默认情况下,日志管理在CLASSPATH 查找一个名为 log4j.properties 的文件。
      配置文件支持UNIX风格的变量替换,如 ${variableName}。
      配置文件中,
       rootLogger是新的使用名称,对应Logger类
       rootCategory是旧的使用名称,对应原来的Category类
       Logger类是Category类的子类,所以,rootCategory是旧的用法,不推荐使用。
    .2.
      Logger类:完成日志记录,设置日志信息级别
      Appender类:决定日志去向,终端、DB、硬盘  
      Layout类:决定日志输出的样式,例如包含当前线程、行号、时间
    
    .3.
      Appender类的属性
        layout    Appender使用布局Layout 对象和与之相关的格式化的日志记录信息转换模式
        target    目标可以是一个控制台,一个文件,或根据附加器的另一个项目
        level    级别是必需的,以控制日志消息的过滤
        threshold    Appender可以有与之独立的记录器级别相关联的级别阈值水平。Appender忽略具有级别低于阈级别的任何日志消息
        filter    Filter 对象可以分析超出级别的匹配记录信息,并决定是否记录的请求应该由一个特定 Appender 或忽略处理。

    二、简单实践

    0、需要的jar文件:log4j-1.2.17.jar   。
         配置文件命名:log4j.properties   ,放在src目录下。
    1、得到以类名称为名字的日志记录器:   
    static Logger log = Logger.getLogger(log4jExample.class.getName()); 2、加载配置文件 如果配置文件在类目录,可省略此步骤,但建议用绝对路径加载; // 可以正确获得资源文件log4j.properties的绝对路径 PropertyConfigurator.configure(ClassLoader.getSystemResource("log4j.properties")); 3、开始记录 log.error("Hello this is an error message"); log.debug("Hello this is an debug message"); log.info("Hello this is an info message"); 4、配置文件示例 # Define the root logger with appender file # log 是临时变量, 会替换 ${log}   log = D:/log4j log4j.rootLogger = DEBUG, FILE # Define the file appender log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=${log}/log.out # Define the layout for file appender log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n

    三、一些说明

    6、Logger类
       Logger类不允许实例化一个新的记录器实例,但它提供了两个静态方法获得一个 Logger 对象:
       public static Logger getRootLogger();//返回应用程序实例根记录器
       public static Logger getLogger(String name);//记录器名称通常是类或包的名称
    
    7、日记级别
       org.apache.log4j.Level
       级别: ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
       代码设定级别用  log.setLevel(Level.WARN);
    
    8、格式化
       布局对象可以根据各种布局格式记录数据,抽象类org.apache.log4j.Layout,是 log4j 的 API 中的所有其他布局类的基类。
       子类有:
          HTMLLayout(以HTML表格形式布局)优势是,它可以被发布为网页,远程查看
          SimpleLayout(包含日志信息的级别和信息字符串)
          TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
          PatternLayout(可以灵活的指定布局格式,常用)
          DateLayout,
          XMLLayout    
       布局方法:
        public abstract boolean ignoresThrowable()
               日志信息是否处理传递给它的日志记录事件的一部分,任何 java.lang.Throwable 对象。
               如果布局对象处理 Throwable 对象,那么布局对象不忽视它,并返回false。
        public abstract String format(LoggingEvent event)       子类重写,实现布局格式
        public String getContentType() 返回使用的布局的对象的内容类型。基类将返回 text/plain 作为默认的内容类型
        public String getFooter()  指定日志消息的页脚信息
        public String getHeader()  指定日志消息的标头信息
    9、HTMLLayout 可以提供:   生成特定的日志事件之前,从应用程序的开始所经过的时间;   调用该记录请求的线程的名称;   与此记录请求相关联的级别;   日志记录器(Logger)和记录消息的名称;   可选程序文件的位置信息,并从其中记录被调用的行号。
    有方法:   setContentType(String) 设置 text
    /html 为 HTML内容的内容类型。默认为 text/html   setLocationInfo(String) 设置位置信息记录事件。默认为 false   setTitle(String) 设置为HTML文件的标题。默认值是Log4j的日志信息 10、日志记录到文件 org.apache.log4j.FileAppender。有以下配置参数: immediateFlush 标志的默认设置为true,输出流实时刷新 encoding 它可以使用任何字符编码。默认情况下是特定于平台的编码方案 threshold 这个 appender 阈值级别 Filename 日志文件的名称 fileAppend 默认设置为true,信息被附加到同一文件的末尾 bufferedIO 此标志表示是否需要写入缓存启用。默认设置为false bufferSize 如果 bufferedI/O 启用,这表示缓冲区的大小,默认设置为8KB 日志记录到多个文件:org.apache.log4j.RollingFileAppender类。 文件大小达到一定的阈值,分成多个文件。 配置参数maxFileSize 上述的文件的回滚临界尺寸。默认值是10MB maxBackupIndex 此属性表示要创建的备份文件的数量。默认值是1。 每天生成日志文件:org.apache.log4j.DailyRollingFileAppender类。 重要的下列配置参数: DatePattern 这表示在滚动的文件,并按命名惯例来执行。默认情况下,在每天午夜滚动。 滚动的含义是, 每个时间段过去后,再已此时间段命名文件(用于以后索引查看), 时间段正在进行时,是当前日志命名。 DatePattern控制使用下列滚动的时间表方式之一: DatePattern 描述 '.' yyyy-MM 滚动在每个月的结束和下一个月初 '.' yyyy-MM-dd 这是默认值,每天午夜滚动 '.' yyyy-MM-dd-a 滚动每一天的午夜和中午 '.' yyyy-MM-dd-HH 滚动在每一个小时 '.' yyyy-MM-dd-HH-mm 滚动在每一个分钟 '.' yyyy-ww 滚动每个星期取决于区域设置时的第一天 11、日志记录到数据库 ,具体配置略 org.apache.log4j.jdbc.JDBCAppender 对象,它能够将日志信息在指定的数据库。 bufferSize 设置缓冲区的大小。默认大小为1 driver 设置驱动程序类为指定的字符串。如果没有指定驱动程序类,默认为sun.jdbc.odbc.JdbcOdbcDriver layout 设置要使用的布局。默认布局是org.apache.log4j.PatternLayout password Sets the database password. sql 指定SQL语句在每次记录事件发生的时间执行。这可能是INSERT,UPDATE或DELETE URL 设置JDBC URL user 设置数据库用户名

    四、常见配置说明

       log4j.rootLogger=日志级别,appender1, appender2, ….
    日志级别:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF。不区分大小写
    注意,需在控制台输入,只需将其中一个appender定义为stdout即可;
    注意,rootLogger默认是对整个工程生效
    注意,如果只想对某些包操作,那么:log4j.logger.com.hutu=info, stdout,表示该日志对package com.hutu生效
    注意,这样做可以区分dev/线上,也可以减小性能影响:if(log.isDebugEnabled()){log.debug();}
    
       log4j.appender.appender1=org.apache.log4j.日志输出到哪儿
    ConsoleAppender(控制台)
    FileAppender(文件)
    DailyRollingFileAppender(每天产生一个日志文件)
    RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)
    WriteAppender(将日志信息以流格式发送到任意指定的地方)
    JDBCAppender(将日志信息保存到数据库中)
    
       log4j.appender.appender1.File=文件目录及文件
    
       log4j.appender.ServerDailyRollingFile.DatePattern=日志后缀格式
            例如,'.'yyyy-MM-dd
    
       log4j.appender.appender1.layout=org.apache.log4j.日志布局格式
    HTMLLayout(以HTML表格形式布局)
    SimpleLayout(包含日志信息的级别和信息字符串)
    TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
    PatternLayout(可以灵活的指定布局格式,常用)
    
    log4j.appender.appender1.layout.ConversionPattern=日志输出格式
    例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
    %c 输出日志信息所属的类的全名
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
    %f 输出日志信息所属的类的类名
    %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
    %m 输出代码中指定的信息,如log(message)中的message
    %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
    %r 输出自应用启动到输出该日志信息所耗费的毫秒数
    %t 输出产生该日志事件的线程名
  • 相关阅读:
    docker 报错 Error response from daemon: error while validating Root CA Certificate: x509: certificate has expired or is not yet valid
    Python list 与 str 互转
    小程序 url传参 参数值过长 接收时候 内容不全的问题
    es6新增对象字面量语法
    Squid Proxy
    常见开发工具安装方法
    批判世界之前先清理你的房间
    windows的双网卡问题
    SSH
    【逆向】Yara规则编写安装与使用教程
  • 原文地址:https://www.cnblogs.com/dacude/p/7712900.html
Copyright © 2011-2022 走看看