博客
关于我
细说log4j
阅读量:516 次
发布时间:2019-03-06

本文共 3270 字,大约阅读时间需要 10 分钟。

Log4j配置与使用详解

1. Log4j简介

Log4j是Apache开源项目,用于在Java应用中便捷地管理日志信息。通过它,我们可以灵活配置日志输出的目的地、格式和级别,满足不同场景的需求。与其他日志组件如JDK Logger、Monolog等相比,Log4j以其灵活性和可配置性著称。

1.1 Log4j概述

  • 功能:支持将日志输出到控制台、文件、GUI组件、套接口服务器、NT事件记录器、UNIX Syslog等多种目的地。
  • 灵活性:可通过配置文件定义日志级别、输出格式等,节省代码修改。
  • 扩展性:支持多种语言接口,适用于C、C++、.Net、PL/SQL等多种开发环境。

1.2 Log4j作用

  • 作为Java日志工具,Log4j帮助开发者跟踪应用程序的运行状态,定位问题,优化性能。

2. Log4j特点与优势

  • 灵活控制日志输出:支持多种输出目的地和格式。
  • 细粒度日志级别控制:提供DEBUG、INFO、WARN等级别,满足不同需求。
  • 配置文件管理:通过单独的配置文件,避免修改源代码。
  • 多语言支持:方便在多种开发环境中统一日志管理。
  • 扩展性强:可与J2EE、JINI等技术集成,适合复杂应用场景。
  • 3. Log4j配置

    3.1 环境准备

    • 工具:IntelliJ IDEA
    • 依赖:log4j-1.2.17.jar

    3.2 配置步骤

  • 创建目录

    • 在项目根目录下,创建conf目录存放配置文件,lib目录存放日志相关JAR包。
  • 配置文件

    • log4j.properties
      # 定义日志级别
      log4j.rootLogger = DEBUG, stdout
      # 输出到控制台的日志格式
      log4j.appender.stdout = org.apache.log4j.ConsoleAppender
      log4j.appender.stdout.Target = System.out
      log4j.appender.stdout.Threshold = INFO
      log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
      log4j.appender.stdout.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%m%n
  • 使用示例

    public class TestLog4j {
    public static void main(String[] args) {
    PropertyConfigurator.configure("conf/log4j.properties");
    Logger logger = Logger.getRootLogger();
    logger.debug("调试信息");
    logger.info("信息级别");
    logger.warn("警告信息");
    logger.error("错误信息");
    }
    }
  • 4. 日志级别管理

    4.1 常用级别解释

    • ALL:所有日志
    • TRACE:高于DEBUG的细粒度日志
    • DEBUG:最细粒度,用于调试
    • INFO:应用运行状态信息
    • WARN:潜在问题提示
    • ERROR:错误事件
    • FATAL:严重错误,可能导致应用崩溃
    • OFF:关闭所有日志输出

    4.2 级别顺序

    ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

    5. 配置文件详解

    5.1 配置根Logger

    log4j.rootLogger = DEBUG, stdout
    • DEBUG:启用调试级别日志。
    • stdout:将日志输出到控制台。

    5.2 定义日志输出目的地

    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    • ConsoleAppender:输出到控制台。
    • Target:指定输出目标,如System.outSystem.err

    5.3 文件输出配置

    log4j.appender.file = org.apache.log4j.FileAppender
    log4j.appender.file.File = logs/app.log
    log4j.appender.file.Threshold = WARN
    log4j.appender.file.layout = org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss,SSS} - %m%n
    • FileAppender:输出到文件。
    • File:指定文件路径。
    • Threshold:指定最低日志级别。
    • PatternLayout:定义日志格式。

    6. 自定义Appender

    6.1 实现步骤

  • 继承AppenderSkeleton:实现append(LoggingEvent)方法。
  • 指定输出流:如System.out或文件输出流。
  • 设置日志格式:通过Layout实现格式化。
  • 管理资源:正确关闭输出流,释放资源。
  • 6.2 示例代码

    public class MyAppender extends AppenderSkeleton {
    private OutputStream out;
    @Override
    protected void append(LoggingEvent loggingEvent) {
    String log = "Appender日志:" + getLayout().format(loggingEvent);
    try {
    byte[] bytes = log.getBytes();
    out.write(bytes);
    out.flush();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    public void setTarget(String target) {
    if (target.equals("System.out")) {
    out = System.out;
    }
    }
    @Override
    public void close() {
    closed = true;
    }
    @Override
    public boolean requiresLayout() {
    return true;
    }
    }

    7. Log4j与Log4j 2的区别

    • 依赖包
      • Log4j:log4j-1.2.17.jar
      • Log4j 2:log4j-api-2.9.0.jar, log4j-core-2.9.0.jar
    • 配置文件
      • Log4j:log4j.xml或log4j.properties
      • Log4j 2:log4j2.xml
    • 使用方式
      • Log4j:import org.apache.log4j.Logger;
      • Log4j 2:import org.apache.logging.log4j.LogManager;

    通过以上配置和使用方法,可以充分利用Log4j的强大功能,实现高效的日志管理。

    转载地址:http://peebz.baihongyu.com/

    你可能感兴趣的文章
    Node服务在断开SSH后停止运行解决方案(创建守护进程)
    查看>>
    node模块化
    查看>>
    node模块的本质
    查看>>
    node环境下使用import引入外部文件出错
    查看>>
    node环境:Error listen EADDRINUSE :::3000
    查看>>
    Node的Web应用框架Express的简介与搭建HelloWorld
    查看>>
    Node第一天
    查看>>
    node编译程序内存溢出
    查看>>
    Node读取并输出txt文件内容
    查看>>
    node防xss攻击插件
    查看>>
    noi 1996 登山
    查看>>
    noi 7827 质数的和与积
    查看>>
    NOI-1.3-11-计算浮点数相除的余数
    查看>>
    NOI2010 海拔(平面图最大流)
    查看>>
    NOIp2005 过河
    查看>>
    NOIP2011T1 数字反转
    查看>>
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>