博客
关于我
细说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/

    你可能感兴趣的文章
    Node.js 历史
    查看>>
    Node.js 在个推的微服务实践:基于容器的一站式命令行工具链
    查看>>
    Node.js 实现类似于.php,.jsp的服务器页面技术,自动路由
    查看>>
    Node.js 异步模式浅析
    查看>>
    node.js 怎么新建一个站点端口
    查看>>
    Node.js 文件系统的各种用法和常见场景
    查看>>
    Node.js 的事件循环(Event Loop)详解
    查看>>
    node.js 简易聊天室
    查看>>
    Node.js 线程你理解的可能是错的
    查看>>
    Node.js 调用微信公众号 API 添加自定义菜单报错的解决方法
    查看>>
    node.js 配置首页打开页面
    查看>>
    node.js+react写的一个登录注册 demo测试
    查看>>
    Node.js中环境变量process.env详解
    查看>>
    Node.js之async_hooks
    查看>>
    Node.js升级工具n
    查看>>
    Node.js卸载超详细步骤(附图文讲解)
    查看>>
    Node.js基于Express框架搭建一个简单的注册登录Web功能
    查看>>
    Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
    查看>>
    Node.js安装及环境配置之Windows篇
    查看>>
    Node.js安装和入门 - 2行代码让你能够启动一个Server
    查看>>