Apache开源日志框架Log4j配置指南

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最方便的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。本篇指南主要介绍Log4j 1.x版本的配置与使用Log4j最新版下载地址:http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip

一、在Eclipse中配置Log4j

1.1、新建Java工程,导入包log4j-1.2.17.jar,工程如下图:

1.2、在src下创建log4j.propertiese配置文件,复制并粘贴以下内容到文件中:

### logger主要定义log4j支持的日志级别及输出目的地 ###
log4j.rootLogger=debug,stdout,file
 
### 配置控制台输出及输出格式 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
 
### 输出DEBUG级别以上的日志到工程根目录下的logs/log.log文件,可以自行修改为绝对路径 ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=logs/log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ]  %m%n

注意:粘贴到Eclipse中后,有些小伙伴会呈现“乱码”:\u6839,这是Unicode编码,并不影响程序的执行。

1.3、在Java类中书写代码

package com.xuetang9.kenny;
import org.apache.log4j.Logger;
/**
 * 使用Log4j打印日志信息<br/>
 * @author Kenny
 * @version 1.0
 * @date 2018年1月8日 下午9:41:13
 * @copyright 老九学堂
 */
public class LoggerTest {
    private static Logger logger = Logger.getLogger(LoggerTest.class);
    public static void main(String[] args) {
        //日志记录的行为是分等级的,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。
        //Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
        logger.debug("记录debug级别信息");
        logger.info("记录info级别信息");
        logger.warn("记录warn级别信息");
    }
}

1.4、输出结果:

控制台:

logs/log.log文件中:

二、Log4j的基本使用方法

Log4j是高度可配置的,并可通过在运行时的外部文件配置。它根据记录的优先级别,并提供机制,以指示记录信息到许多的目的地,诸如:数据库,文件,控制台,UNIX系统日志等。

Log4j中有三个主要组成部分:

– loggers:
负责捕获记录信息。


appenders : 负责发布日志信息,以不同的首选目的地。

– layouts:
负责格式化不同风格的日志信息。

2.1、配置文件的定义

log4j也可以通过配置文件的方式进行设置,目前支持两种格式的配置文件:xml文件和properties文件(推荐)。

1、配置根Logger,语法为:

log4j.rootLogger=[level], appenderName1, appenderName2, ....

level表示日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别(E、F、G等)。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,我们可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName就是指日志信息输出到哪个地方。可以同时指定多个输出目的地。

2、配置日志信息输出目的地(Appender),语法如下:

log4j.appender.appenderName=fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1=value1
    ...............
log4j.appender.appenderName.option=valueN

其中,log4j提供的appender有以下几种,根据项目需要使用即可:

org.apache.log4j.ConsoleAppender            输出到控制台
org.apache.log4j.FileAppender               输出到文件
org.apache.log4j.DailyRollingFileAppender   每天产生一个日志文件
org.apache.log4j.RollingFileAppender        文件大小到达指定尺寸的时候产生一个新的文件
org.apache.log4j.WriterAppender             将日志信息以流格式发送到任意指定的地方

3、配置日志信息输出的格式(布局),语法如下:

log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1=value1
    ..............
log4j.appender.appenderName.layout.option=valueN

Log4j提供的格式layout有以下几种:

org.apache.log4j.HTMLLayout     HTML表格形式布局
org.apache.log4j.PatternLayout  可以灵活地指定布局模式(常用)
org.apache.log4j.SimpleLayout   包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout     包含日志产生的时间、线程、类别等等信息

Log4j采用类似C语言的printf函数格式化日志信息,打印参数如下:

%p 输出优先级,即DEBUGINFOWARNERRORFATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:20181231 235959123
%l 输出日志事件的发生位置,包括类名、发生的线程,以及在代码中的行数。如:LoggerTest.main(LoggerTest.java:18)

4、日志级别

每个Logger都被了一个日志级别(log level),用来控制日志信息的输出。日志级别从高到低分为:

A:off 最高等级,用于关闭所有日志记录。

B:fatal 指出每个严重的错误事件将会导致应用程序的退出。

C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。

D:warm 表明会出现潜在的错误情形。

E:info 一般和在粗粒度级别上,强调应用程序的运行全程。

F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。

G:all 最低等级,用于打开所有日志记录。

上面这些级别是定义在org.apache.log4j.Level类中。Log4j只建议使用4个级别,优先级从高到低分别是error,warn,info和debug。通过使用日志级别,可以控制应用程序中相应级别日志信息的输出。例如,如果使用b了info级别,则应用程序中所有低于info级别的日志信息(如debug)将不会被打印出来。

更多干货笔记关注微信公众号 : 老九学堂

原文地址:https://www.cnblogs.com/ljxt/p/11613038.html

时间: 2024-10-19 09:36:04

Apache开源日志框架Log4j配置指南的相关文章

开源日志技术log4j

老师的总结: 日志:除了能记录异常信息,还可以记录程序正常运行时的关键信息. 使用log4j来进行日志文件记录经典步骤: 001.在项目中创建一个lib文件夹,然后将下载好的jar包copy到该文件夹下 002.对已经copy过来的jar包,点击右键,然后执行下图操作, 项目中就会多出一个引入外部Library的项目 003.在src目录下创建一个名称为log4j.properties文件 004.编写,粘贴已经写好的配置文件内容,编码方式可以做下修正.对配置文件点击右键→属性→other→ut

Exceptionless - .Net Core开源日志框架

原文:Exceptionless - .Net Core开源日志框架 Exceptionless - .Net Core开源日志框架 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/11020140.html 官网地址:http://letyouknow.net 今天要给大家介绍的Exceptionless是一个基于 .net core的开源日志框架,Exceptionless的意思是:没有异常.Exceptionless可

开源日志框架Exceptionless使用教程

原文:开源日志框架Exceptionless使用教程 Exceptionless是一款日志记录框架,它开源.免费.提供管理界面.易于安装和使用.ExceptionLess底层采用ElasticSearch作为日志存储,提供了快速.丰富的查询API,方便我们进行系统集成.本文将介绍ExceptionLess的常见用法. 安装ExceptionLess 在ExceptionLess官网提供了基于Docker的私有化部署方式,我们可以按照官网的方式进行测试环境的安装. 在官网github中下载最新的r

log4net 日志框架的配置

log4net 日志框架的配置(一) 添加对log4net程序集的引用 选择程序集文件添加引用即可,需要注意的是需要添加相应程序版本的程序集,如果你的应用是基于.netFramework2.0,则应选择net 2.0版本的程序集 修改配置文件,配置log4net相关设置 在web.config或在app.config(如果没有则创建一个)中,配置log4net的使用 1 <?xml version="1.0"?> 2 3 <configuration> 4 &l

配置日志框架——Log4j

Log4j作为一个开源的优秀日志框架,被广泛使用,Hibernate和MyBatis都是支持Log4j的,我们只需要引入Log4j的jar包即可. Log4j.properties文件 log4j.rootLogger=info,appender1,appender2 //appender1,appender2这是输出的目标地址,当然可以有多个,在这里只写了两个 log4j.appender.appender1=org.apache.log4j.ConsoleAppender //指定输出类型,

004-log-common-logging,Apache整合日志框架JCL门面框架、JCL+log4j

一.概述 Jakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具.它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具.用户被假定已熟悉某种日志实现工具的更高级别的细节.JCL提供的接口,对其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,进行了简单的包装,此接口更接近于Log4J和LogKit的实现. 在Log

软件开发工程师(JAVA)中级考试大纲-----四(四)Log4J的原理及配置;Log4J常用的API;在项目中应用日志框架Log4J关键类和接口介绍;Java properties配置文件log

log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程.最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码. 1定义 log4j--log for java(java的日志) 在强调可重用组件开发的今天,除了

基于Java的开源日志库log4j调研笔记

由于Hadoop生态链基本都是java开发的,所以在很多有关大数据处理的开源项目中,经常会看到log4j这个jar包. 本文旨在对它的用法做基本说明. 1. log4j是什么 从log4j的命名(log for java)不难看出,它是为java提供的日志库.具体而言,它是Apache基金会下的开源项目,它可在不修改应用程序代码的前提下,在程序运行时提供灵活的日志打印功能(当然,应用程序还是必须在代码中调用log4j进行打印,但程序发布后,可以通过配置文件控制日志输出目的地及允许输出的日志等级)

springBoot日志框架自动配置与原理

1.日志框架 小张:开发一个大型系统: ? 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件? ? 2.框架来记录系统的一些运行时信息:日志框架 : zhanglogging.jar: ? 3.高大上的几个功能?异步模式?自动归档?xxxx? zhanglogging-good.jar? ? 4.将以前框架卸下来?换上新的框架,重新修改之前相关的API:zhanglogging-prefect.jar: ? 5.JDBC---数据库驱动: ?