博客
关于我
Log4j 1使用教程
阅读量:790 次
发布时间:2023-02-06

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

Log4J日志配置详细指南

Log4J(对数日志记录器)是Java中广泛使用的日志记录框架,通过简洁易懂的配置文件,允许开发者灵活管理日志输出。以下是关于Log4J配置的详细指南,涵盖了日志文件、格式、输出级别以及日志记录器的配置方法。


1. 配置文件

基本结构

Log4J的配置文件通常以log4j.properties为文件名,内容主要包含以下几个部分:

  • 根Logger配置

    配置根Logger的输出级别和Appender(日志输出目标)。

    log4j.rootLogger=DEBUG, A1, R
    • DEBUG:调试级别,适用于详细的日志信息。
    • A1:指定一个Appender,定义在log4j.appender.A1下。
    • R:另一个Appender,通常用于输出到文件或控制台。
  • Appender配置

    Appender定义了日志信息的输出目标和格式。常见的Appender类型包括:

    • ConsoleAppender:输出到控制台。
    • FileAppender:输出到文件。
    • DailyRollingFileAppender:每天生成一个新的日志文件。
    • RollingFileAppender:根据文件大小自动滚动。
    • SMTPAppender:将日志信息发送到电子邮件。
  • 日志格式布局

    使用PatternLayoutHTMLLayout等布局方式,灵活定义日志输出格式。

    log4j.appender.A1.layout=PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c %x - %m%n
    • %d{yyyy-MM-dd HH:mm:ss}:输出日期和时间。
    • [%t]:输出线程名。
    • %-5p:输出日志级别(DEBUG、INFO等)。
    • %c:输出日志的类别(类名)。
    • %x:输出嵌套诊断环境(NDC)。
  • 日志输出级别

    Log4J支持五种日志级别,从低到高依次为:

    • DEBUG(调试)
    • INFO(信息)
    • WARNING(警告)
    • ERROR(错误)
    • FATAL(严重错误)

  • 2. 在代码中初始化Logger

    方法一:使用BasicConfigurator.configure()

    在程序中手动初始化Logger,例如:

    import org.apache.log4j.BasicConfigurator;import org.apache.log4j.Logger;public class TestLog4j {    public static void main(String[] args) {        BasicConfigurator.configure("log4j.properties");        Logger logger = Logger.getLogger(TestLogj.class);        logger.debug("这是一个调试级别的日志");        logger.error("这是一个错误级别的日志");    }}

    方法二:通过命令行参数传递配置文件

    使用命令行参数指定配置文件路径:

    java -Dlog4j配置文件=conf/log4j.properties MyClass

    方法三:通过环境变量传递配置文件

    配置文件路径可以通过环境变量传递:

    export LOG4J_CONFIG_FILE=/path/to/log4j.propertiesjava -DLOG4J_CONFIG_FILE=$LOG4J_CONFIG_FILE MyClass

    方法四:通过应用服务器传递配置

    在应用服务器(如Tomcat)中创建一个log4j.properties,并通过特殊Servlet完成配置。


    3. 为不同的Appender设置日志输出级别

    为了实现不同Appender的日志级别设置,可以在配置文件中指定每个Appender的Threshold。例如:

    log4j.rootLogger=DEBUG, A1, Rlog4j.appender.A1.Threshold=DEBUGlog4j.appender.R.Threshold=INFO
    • A1:所有DEBUG级别及以上日志输出到控制台。
    • R:所有INFO级别及以上日志输出到文件。

    4. 高级使用场景

    1. 输出到2000NT日志

    对于Windows 2000系统,可以使用NTEventLogAppender将FATAL级错误写入系统日志。配置示例:

    log4j.logger.NTlog=FATAL, A8log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppenderlog4j.appender.A8.Source=JavaTestlog4j.appender.A8.layout=PatternLayoutlog4j.appender.A8.layout.ConversionPattern=%-4r [%t] %37c %3x - %m%n

    2. 将错误日志发送邮件

    使用SMTPAppender将WARNING、ERROR和FATAL级错误发送到管理员邮箱。配置示例:

    log4j.logger.MailLog=WARN, A5log4j.appender.A5=org.apache.log4j.net.SMTPAppenderlog4j.appender.A5.BufferSize=5log4j.appender.A5.SMTPHost=smtp.263.netlog4j.appender.A5.layout=PatternLayoutlog4j.appender.A5.layout.ConversionPattern=%-4r [%t] %37c %3x - %m%n

    3. 在后台输出所有类别的错误

    使用ConsoleAppender将所有级别的日志输出到控制台。配置示例:

    log4j.logger.console=DEBUG, A1log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%-4r [%t] %37c %3x - %m%n

    5. 全部配置文件示例

    log4j.rootLogger=DEBUG, A1, Rlog4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c %x - %m%nlog4j.appender.R=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.File=blog_log.txtlog4j.appender.R.MaxFileSize=500KBlog4j.appender.R.MaxBackupIndex=10log4j.appender.R.layout=PatternLayoutlog4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] [%c] [%p] - %m%n

    6. 代码示例

    import org.apache.log4j.Logger;public class Log4jTest {    public static void main(String[] args) {        // 加载配置文件        PropertyConfigurator.configure("log4j.properties");                // 获取Logger实例        Logger logger = Logger.getLogger(Log4jTest.class);                // 使用不同级别的Logger        logger.debug("这是一个调试级别的日志");        logger.info("这是一个信息级别的日志");        logger.warn("这是一个警告级别的日志");        logger.error("这是一个错误级别的日志");        logger.fatal("这是一个严重错误级别的日志");    }}

    通过以上配置,您可以根据具体需求灵活设置日志输出目标、级别和格式,实现高效的日志管理。

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

    你可能感兴趣的文章
    log4j记录日志
    查看>>
    Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合
    查看>>
    Log4j配置详解和实例
    查看>>
    Log4Net组件的应用详解
    查看>>
    log4net配置,正在用
    查看>>
    Logback configuration error detected:D:\log\exchange-platform\info.2021-07-27.log (系统找不到指定的路径。)
    查看>>
    Logback 配置文件例
    查看>>
    logback-spring.xml配置
    查看>>
    logback.xml 配置详解(1)
    查看>>
    logback.xml配置
    查看>>
    logback.xml配置导入spring无法启动:ch.qos.logback.core.joran.spi.JoranException: I/O error occurred while par
    查看>>
    logback异步日志AsyncAppender配置
    查看>>
    logback的使用和logback.xml详解
    查看>>
    logback配置
    查看>>
    logback配置文件详解
    查看>>
    Logback配置输出sql
    查看>>
    logger4j 日志配置内,各种符号详解
    查看>>
    logging.config报错FileNotFoundError
    查看>>
    logistic分类
    查看>>
    Logistic回归Cost函数和J(θ)的推导(二)----梯度下降算法求解最小值
    查看>>