Log4j日志工具使用

概念

Log4j是Apache的一个开源项目,是一个使用简单灵活,功能强大,应用广泛的日志工具。

优点

  • 可以控制级别信息输出
  • 可以控制信息输出的目的地
  • 可以控制信息输出的格式

以上都只需要更改log4j的配置文件就可以对日志信息输出进行相关的控制,不需要对源码内容进行修改。

Log4j的组件

这里写图片描述

  • 日志器
    在源代码中使用,提供了多种方法,用于输出程序中的调试、警告、错误等信息。
  • 输出器
    在配置文件中配置,提供了多种Appender实现类,可以决定日志的输出位置,常见的有文件输出、控制台输出等。
  • 布局器
    在配置文件中配置,可以决定日志输出的格式,后面详细介绍。

在eclipse中搭建Log4j环境

  • 创建一个Web项目
    这里写图片描述
  • 在项目中导入log4j包
    先下载log4j的jar包,然后在工程中build path->add External JARs->选择下载的jar,也可以将下载的jar包复制进项目下->add JARS 。如果是maven项目,可以直接在porm.xml文件中写入log4j的依赖。
  • 在项目中添加log4j.properties配置文件。
  • 在代码中使用Logger组件写相关的日志消息

    package com.hnust.demo;
    import org.apache.log4j.Logger;
    public class Log4jDemo {
    //获取logger日志器
    static Logger logger=Logger.getLogger(Log4jDemo.class);
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        logger.debug("调试信息");
        logger.info("普通信息");
        logger.warn("警告信息");
        logger.error("错误信息");
        logger.fatal("致命信息");
      }
    }
    

    以上logger使用的五个方法从debug到fatal代表日志信息的从低到高的级别。后续再配置文件中填写级别时,只有与选择的级别相同和比选择的级别高的信息才会输出。

  • 根据需求在log4j.properties文件中配置Log4j的Logger,Appender,Layout组件。

    根日志器配置格式
    log4j.rootLogger=[level],appenderName1,appenderName2…..
    level是指输出日志信息的级别,然后可以指定若干个Appender输出器名。

    Appender配置格式
    log4j.appender.[AppenderName]=org.apache.log4j.[AppenderType]
    appenderName是自定义的Appender输出器名
    AppenderType是指Appender输出器类型,以下是可供使用的输出器类型。

    名称 描述
    AsyncAppender 使用一个单独线程记录日志,实现异步处理日志事件。
    CassandraAppender 将日志信息输出到一个Apache的Cassandra数据库
    ConsoleAppender 将日志信息输出到控制台
    FailoverAppender 包含其他appenders,按顺序尝试,直至成功或结尾
    FileAppender 一个OutputStreamAppender,将日志输出到文件
    FlumeAppender 将日志输出到Apache Flume系统
    JDBCAppender 将日志通过JDBC输出到关系型数据库
    JMS Appender 将日志输出到JMS(Java Message Service)
    JPAAppender 将日志输出到JPA框架
    HttpAppender 通过HTTP输出日志
    KafkaAppender 将日志输出到Apache Kafka
    MemoryMappedFileAppender 将日志输出到一块文件关联的内存
    NoSQLAppender 将日志输出到NoSQL数据库,如MongoDB
    OutputStreamAppender 将日志输出到一个OutputStream
    RandomAccessFileAppender 性能比FileAppender高20%~200%的文件输出Appender
    RewriteAppender 允许对日志信息进行加工
    RollingFileAppender 按log文件最大长度限度生成新文件
    RollingRandomAccessFA 添加了缓存的RollingFileAppender
    RoutingAppender 将日志事件分类,按条件分配给子appender
    SMTPAppender 将日志输出到邮件
    SocketAppender 将日志输出到一个Socket
    SyslogAppender 是一个SocketAppender,将日志输出到远程系统日志
    ZeroMQ/JeroMQ Appender 使用JeroMQ库将日志输出到ZeroMQ终端

    Layout配置格式:
    log4j.appender.[AppenderName].layout=org.apache.log4j.[LayoutType]
    LayoutType是指Layout布局器类型,以下是布局器的类型

    类型 功能
    PatternLayout 根据指定的转换模式格式化日志输出
    HTMLLayout 格式化日志输出为HTML表格
    XMLLayout 格式化日志输出为XML文件
    SimpleLayout 以一种非常简单的方式格式化日志输出
    TTCCLayout 包含日志产生的时间、线程、类别等信息

log4j使用效果

  • 使用最简单的log4j配置运行效果如下
    log4.properties配置文件内容
#根日志器定义
log4j.rootLogger=info,myconsole

#Appender输出器配置
log4j.appender.myconsole=org.apache.log4j.ConsoleAppender

#Layout布局器配置
log4j.appender.myconsole.layout=org.apache.log4j.SimpleLayout

运行结果如下:
运行效果图

  • 使用多种Appender和多种格式输出
    log4.properties配置文件内容
#根日志器定义
log4j.rootLogger=warn,myconsole,myfile

#Appender输出器配置
#Appender1
log4j.appender.myconsole=org.apache.log4j.ConsoleAppender
#Appender2
log4j.appender.myfile=org.apache.log4j.FileAppender
log4j.appender.myfile.File=D:\\log4.txt

#Layout布局器配置
#Layout1
log4j.appender.myconsole.layout=org.apache.log4j.SimpleLayout
#Layout2
log4j.appender.myfile.layout=org.apache.log4j.PatternLayout
log4j.appender.myfile.layout.ConversionPattern=%d{HH:mm:ss} %c-%M-%m%n

log4j.appender.myfile.layout.ConversionPattern后面的是一个类似于正则表达式的式子,可以根据自己需求规范化输出的格式。
常用参数如下:


#%c 输出所属的类目,通常就是所在类的全名 
#%C 输出Logger所在类的名称,通常就是所在类的全名 
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},%d{ABSOLUTE},%d{DATE}
#%F 输出所在类的类名称,只有类名。
#%l 输出语句所在的行数,包括类名+方法名+文件名+行数
#%L 输出语句所在的行数,只输出数字
#%m 输出代码中指定的讯息,如log(message)中的message
#%M 输出方法名
#%p 输出日志级别,即DEBUG,INFO,WARN,ERROR,FATAL
#%r 输出自应用启动到输出该log信息耗费的毫秒数
#%t 输出产生该日志事件的线程名
#%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
#%% 用来输出百分号“%”

运行结果:
(文件名和路径log4j.appender.myfile.File=D:\log4.txt)
这里写图片描述

总结

本文介绍了Log4j的入门使用,具体运用在大型项目中还需要后续慢慢积累学习,由于它的灵活性和使用范围之广,需要查找Log4j相关文档学习。

猜你喜欢

转载自blog.csdn.net/superxiaolong123/article/details/81078129