`

Log4j 日志框架入门

阅读更多
1
讨论组:
log4j-user@jakarta.apache.org
ceki@apache.org

2
主页
http://jakarta.apache.org/log4j

3
使用:
3.1 配置Log4j

3.1.1
BasicConfigurator.configure();


3.1.2
log4j.properties

3.2 在类中创建 Logger.

HelloWorld.java

package cn.bisosft.component.log.log4j.demo;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

public class HelloWorld
{
    private static Logger logger = Logger.getLogger("cn.bisosft.component.log.log4j.demo.HelloWorld");

    static public void main(String[] args)
    {
        BasicConfigurator.configure();
        logger.debug("Hello world.");
    }
}


3.3 使用logger 输出信息.
3.3.1 支持的方法:
debug()
info()
warn()
error()
fatal()
log()

4.
Log4j 架构

4.1 Log4j 包括三个组件:
Logger
Appender
Layout

4.2 Logger 层次体系结构

4.2.1 RootLogger 根记录器:

4.2.1.1 它总是存在, 可以通过
Logger.getRootLogger() 获取.

4.2.1.2 它的级别不能设置为空.

4.2.1.3 不能通过名字获取它.

4.2.2 所有其它 Logger 必须在所属类中通过 getLogger() 来获取实例.

4.2.3 Named Hierarchy Rule 层次命名规则(继承关系):
log4j.logger.cn.bisoft=DEBUG
log4j.logger.cn.bisoft.component=DEBUG

上面的代码说明:
log4j.logger.cn.bisoft 是 父Logger,
log4j.logger.cn.bisoft.component  是 子Logger.

4.3
级别/优先级

优先级从低到高:

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

log() 可指定级别,输出消息

4.3.2
输出异常堆栈:
logger.debug(String msg, Throwable e)
logger.fatal(String msg, Throwable e)
logger.error(String msg, Throwable e)
logger.fatal(String msg, Throwable e)

常见错误:
很多人使用
logger.error(e) 或 logger.error(e.getMessage()), 这个不会 print 异常堆栈的, 应该使用
logger.error("exception information!", e)

e.getMessage() 这个方法最好不要使用, 它输出的信息是很少的, 不利于调试.


4.3.3 Logger 控制输出消息级别
rootLogger=INFO
x=NONE
x.y=DEBUG
x.y.z=NONE

则它的的影响范围:
rootLogger INFO
x INFO
x.y DEBUG
x.y.z DEBUG

注意: Logger 消息级别默认取自己的,若没有配置则向上(祖先/父亲)搜索第一个非空的Logger 的级别.

4.3.4 logger 过滤器
Logger 只会记录优先级 >= 当前级别的消息, 低于此级别的消息将 drop 掉.

4.3.4 Hierarchy-wide Threshold Filter 全局范围Logger过滤器
它的优先级高于所有的Logger, 是总开关.默认为ALL,不过滤任何消息.

设置:

LoggerRepository repository = x.getLoggerRepository();
// Set the hierarchy-wide threshold to WARN effectively disabling
// all INFO and DEBUG requests.
repository.setThreshold(Level.WARN);




5
Appender

表示输出目的地, 一个Logger 可以有多个目的地.

5.1
console
file
Swing component
remote socket server
JMS
NT Event Logger NT事件记录器
Remote UNIX Syslog daemon 远程UNIX系统日志守护进程

5.2
支持异步输出.

5.3
默认行为:
logger 获取自己的Appender及向上获取 所有 的Appender, 向他们发送消息.

5.4
Appender Additivity Rule: Appender的可加性规则

若 Logger 的父 Logger 的Additivity标志为 false, 则
logger 获取自己的Appender及向上获取直到遇到 父 Logger(包括父 Logger) 所有 的Appender, 向他们发送消息.



6
Layout

输出消息格式控制

PatternLayout

c
输出日志事件信息

C
输出完全限定类名

d
输出日期

p
输出日志级别

r
输出消息输出时间

t 
输出线程名

F
输出文件名

l
输出调用信息

L 
输出行号

m 
输出消息

M 
输出方法名

n
换行

x
Outputs the NDC (nested diagnostic context) associated with the
thread that generated the logging event.

X
Outputs the MDC (mapped diagnostic context) associated with the
thread that generated the logging event.

%
%%输出%

填充:
%20 左填充
%-20 右填充

裁剪:
%.20 超过20个字符,从左边裁剪.




7
配置文件示例:

log4j.properties

#################################################
#
# Log4j 配置模板
#
#################################################

# log4j.rootLogger=[level], [appenderName1, appenderName2, ...]
# 配置RootLogger级别, 及Appender列表.
log4j.rootCategory=DEBUG, CONSOLE, LOGFILE

# log4j.threshold=[level]
# 配置全局消息过滤器
log4j.threshold=ALL

# 包消息级别
log4j.logger.org.hibernate=INFO
log4j.logger.cn.bisoft=DEBUG
log4j.logger.cn.bisoft.component=DEBUG

# CONSOLE settings.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=ERROR
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS} [%-5p] %c - %m%n

# LOG FILE settings.
log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.File=log/debug.log
log4j.appender.LOGFILE.MaxFileSize=10MB
log4j.appender.LOGFILE.MaxBackupIndex=5
log4j.appender.LOGFILE.File.DatePattern='.'yyyy-MM-dd-HH-mm-ss

log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=[%d{mm:ss.SSS}] |  %-5p | %-20C{1}.%-20M(L: %-4L) | %-50m |  (%r ms)%n

# 输出消息编码
log4j.appender.LOGFILE.encoding=UTF-8

















分享到:
评论

相关推荐

    log4J最简单入门

    Log4J是一款非常流行的Java日志框架,由Apache软件基金会提供。它可以帮助开发者在应用程序中记录日志信息,这对于调试和维护应用程序来说至关重要。本文将通过一个简单的示例,帮助初学者快速了解Log4J的基本配置和...

    log4j入门、详解

    **日志框架Log4j详解** 日志框架在软件开发中扮演着至关重要的角色,它提供了记录应用程序运行过程中的各种事件的功能,便于调试、监控和问题排查。Log4j是Apache组织开发的一个开源的日志记录工具,广泛应用于Java...

    log4j2使用入门

    **标题:“Log4j2使用入门”** **描述:** 这篇博客主要介绍了如何开始使用Log4j2,Log4j...通过学习“Log4j2使用入门”,开发者能够快速上手这个强大的日志框架,提升其日志管理能力,从而更好地支持软件开发和维护。

    日志框架log4j和slf4j入门教程(私塾在线)视频配套学习资料

    ### 日志框架log4j和slf4j入门教程知识点详解 #### 一、Log4j简介 **Log4j** 是Apache组织下的一个开源项目,主要用于Java应用程序的日志记录功能。通过Log4j,开发者可以灵活地控制日志信息的输出格式、输出目的...

    log4j日志管理安装使用文档

    Apache Log4j 是一个广泛使用的开源日志框架,它为Java应用程序提供了一种灵活且高效的日志记录解决方案。Log4j 支持多种输出方式,包括控制台、文件、数据库等,并允许自定义日志级别和格式,以满足不同开发需求。 ...

    Log4j教程

    **四、Log4j与其他日志框架的比较** Log4j在Java日志领域有很高的市场份额,但它并非唯一的选择。其他常见的日志框架包括Logback(由Log4j的作者设计的替代品)和Java Util Logging (JUL)。Log4j因其丰富的功能集、...

    log4j从入门到详解

    ### log4j从入门到详解 #### 1. Log4j简介 Log4j是一款由Apache组织...总之,Log4j是一个强大且灵活的日志框架,能够满足大多数Java应用的需求。通过合理的配置和使用,可以帮助开发者更好地管理应用程序的日志信息。

    log4j2用户指南

    ### Log4j2 用户指南知识点概述 ...综上所述,Log4j2 是一个功能强大且高度可定制的日志框架,适用于各种规模的应用程序。通过合理利用其丰富的特性和功能,开发者可以轻松实现高效、灵活的日志记录解决方案。

    log4j快速入门与精通

    ### Log4j快速入门与精通知识点详解 #### 一、Log4j简介 Log4j 是 Apache 的一个开源项目,用于 Java 应用程序的日志记录。它提供了一个灵活的日志记录框架,允许开发者根据需求定制日志级别、输出目标等配置。Log...

    Log4j快速入门

    Log4j是Apache的一个开放源代码项目,它是一个功能强大的日志框架,广泛应用于各种Java应用程序中,以帮助开发者记录日志信息。Log4j提供了灵活的日志管理,支持多种日志输出方式,并允许开发者根据不同的需求,控制...

    log4j测试程序

    1. **Log4j基本概念**:Log4j是一个日志框架,它为Java应用程序提供了一套全面的日志处理机制,包括日志记录、配置、过滤、输出格式化等功能。 2. **日志级别**:Log4j支持多种日志级别,如DEBUG、INFO、WARN、...

    log4j入门、详解.pdf

    Log4j是Apache组织提供的一个开源日志框架,它可以帮助开发者轻松地在应用程序中实现日志记录功能。传统的日志记录方式通常是在代码中直接使用`System.out.println()`等方法,这种方法虽然简单但存在诸多不足之处,...

    java学习log4j详细文档和入门工程

    Log4j是Apache组织提供的一款广泛使用的开源日志框架,适用于Java应用程序。本资料包包含了关于Log4j的详细学习资源,包括文档、PPT以及一个简单的入门工程,帮助初学者快速掌握Log4j的使用。 **1. Log4j基础概念**...

    Log4j入门指南入门教程

    Log4j是由Apache组织提供的开源日志框架,广泛应用于Java应用中,尤其在企业级应用开发中非常常见。Log4j具有强大的功能和灵活性,支持多种输出方式(例如控制台、文件等),并且可以根据不同的级别过滤日志信息。 ...

    mybatis查询入门(log4j控制台sql语句日记输出的)

    【标题】"mybatis查询入门(log4j控制台sql语句日记输出的)"涉及的知识点主要集中在MyBatis框架的基础使用以及如何通过Log4j在控制台输出SQL语句,以便于调试和优化数据库操作。MyBatis是一个轻量级的Java持久层框架...

    Log4j入门学习笔记

    Log4j是一个广泛使用的Java日志框架,旨在解决程序开发中日志记录的复杂性和可维护性问题。它提供了一种灵活的方式来控制日志信息的输出格式、输出级别和输出位置,使得在调试、监控和故障排查时更加便捷。 1. **...

Global site tag (gtag.js) - Google Analytics