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

本文共 3223 字,大约阅读时间需要 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.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.Threshold = INFOlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.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.ConsoleAppenderlog4j.appender.stdout.Target = System.out
    • ConsoleAppender:输出到控制台。
    • Target:指定输出目标,如System.outSystem.err

    5.3 文件输出配置

    log4j.appender.file = org.apache.log4j.FileAppenderlog4j.appender.file.File = logs/app.loglog4j.appender.file.Threshold = WARNlog4j.appender.file.layout = org.apache.log4j.PatternLayoutlog4j.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/

    你可能感兴趣的文章
    npm的“--force“和“--legacy-peer-deps“参数
    查看>>
    npm的安装和更新---npm工作笔记002
    查看>>
    npm的常用操作---npm工作笔记003
    查看>>
    npm的常用配置项---npm工作笔记004
    查看>>
    npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
    查看>>
    npm编译报错You may need an additional loader to handle the result of these loaders
    查看>>
    npm设置淘宝镜像、升级等
    查看>>
    npm设置源地址,npm官方地址
    查看>>
    npm设置镜像如淘宝:http://npm.taobao.org/
    查看>>
    npm配置安装最新淘宝镜像,旧镜像会errror
    查看>>
    NPM酷库052:sax,按流解析XML
    查看>>
    npm错误 gyp错误 vs版本不对 msvs_version不兼容
    查看>>
    npm错误Error: Cannot find module ‘postcss-loader‘
    查看>>
    npm,yarn,cnpm 的区别
    查看>>
    NPOI
    查看>>
    NPOI之Excel——合并单元格、设置样式、输入公式
    查看>>
    NPOI初级教程
    查看>>
    NPOI利用多任务模式分批写入多个Excel
    查看>>
    NPOI在Excel中插入图片
    查看>>
    NPOI将某个程序段耗时插入Excel
    查看>>