Log4j的使用

slf4j log4j 和slf4j log4j2 使用或log4j升级 1.pom.xml 文件 编写依赖后,maven导入后进行下面的操作。-- 自定义包/类日志级别 -->-- 控制台输出 -->-- 根日志级别 -->-- 文件输出 --> 阅读详情
 

1. 概述

1.1. 背景

在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。

最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句充斥了代码的主体。

1.2. Log4j简介

在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。

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

此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。

本文介绍的Log4j版本是1.2.3。作者试图通过一个简单的客户/服务器Java程序例子对比使用与不使用Log4j 1.2.3的差别,并详细讲解了在实践中最常使用Log4j的方法和步骤。在强调可重用组件开发的今天,相信Log4j将会给广大的设计开发人员带来方便。加入到Log4j的队伍来吧!

2. 一个简单的例子

2.2.1. 客户程序

package log4j ;

import java.io.* ;
import java.net.* ;

// add for log4j: import some package
import org.apache.log4j.PropertyConfigurator ;
import org.apache.log4j.Logger ;
import org.apache.log4j.Level ;

/**
 *
 * 

Client With Log4j

*

Description: a sample with log4j

* @version 1.0 */ public class ClientWithLog4j { /* add for log4j: class Logger is the central class in the log4j package. we can do most logging operations by Logger except configuration. getLogger(...): retrieve a logger by name, if not then create for it. */ static Logger logger = Logger.getLogger ( ClientWithLog4j.class.getName () ) ; /** * * @param args : configuration file name */ public static void main ( String args [] ) { String welcome = null ; String response = null ; BufferedReader reader = null ; PrintWriter writer = null ; InputStream in = null ; OutputStream out = null ; Socket client = null ; /* add for log4j: class BasicConfigurator can quickly configure the package. print the information to console. */ PropertyConfigurator.configure ( "ClientWithLog4j.properties" ) ; // add for log4j: set the level // logger.setLevel ( ( Level ) Level.DEBUG ) ; try{ client = new Socket( "localhost" , 8001 ) ; // add for log4j: log a message with the info level logger.info ( "Client socket: " + client ) ; in = client.getInputStream () ; out = client.getOutputStream () ; } catch ( IOException e ) { // add for log4j: log a message with the error level logger.error ( "IOException : " + e ) ; System.exit ( 0 ) ; } try{ reader = new BufferedReader ( new InputStreamReader ( in ) ) ; writer = new PrintWriter ( new OutputStreamWriter ( out ), true ) ; welcome = reader.readLine () ; // add for log4j: log a message with the debug level logger.debug ( "Server says: ’" + welcome + "’" ) ; // add for log4j: log a message with the debug level logger.debug ( "HELLO" ) ; writer.println ( "HELLO" ) ; response = reader.readLine () ; // add for log4j: log a message with the debug level logger.debug ( "Server responds: ’" + response + "’" ) ; // add for log4j: log a message with the debug level logger.debug ( "HELP" ) ; writer.println ( "HELP" ) ; response = reader.readLine () ; // add for log4j: log a message with the debug level logger.debug ( "Server responds: ’" + response + "’") ; // add for log4j: log a message with the debug level logger.debug ( "QUIT" ) ; writer.println ( "QUIT" ) ; } catch ( IOException e ) { // add for log4j: log a message with the warn level logger.warn ( "IOException in client.in.readln()" ) ; System.out.println ( e ) ; } try { Thread.sleep ( 2000 ) ; } catch ( Exception ignored ) {} } }

2.2.2. 服务器程序

package log4j;

import java.util.* ;
import java.io.* ;
import java.net.* ;

// add for log4j: import some package
import org.apache.log4j.PropertyConfigurator ;
import org.apache.log4j.Logger ;
import org.apache.log4j.Level ;

/**
 *
 * 

Server With Log4j

*

Description: a sample with log4j

* @version 1.0 */ public class ServerWithLog4j { final static int SERVER_PORT = 8001 ; // this server’s port /* add for log4j: class Logger is the central class in the log4j package. we can do most logging operations by Logger except configuration. getLogger(...): retrieve a logger by name, if not then create for it. */ static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () ) ; /** * * @param args */ public static void main ( String args[]) { String clientRequest = null ; BufferedReader reader = null ; PrintWriter writer = null ; ServerSocket server = null ; Socket socket = null ; InputStream in = null ; OutputStream out = null ; /* add for log4j: class BasicConfigurator can quickly configure the package. print the information to console. */ PropertyConfigurator.configure ( "ServerWithLog4j.properties" ) ; // add for log4j: set the level // logger.setLevel ( ( Level ) Level.DEBUG ) ; try{ server = new ServerSocket ( SERVER_PORT ) ; // add for log4j: log a message with the info level logger.info ( "ServerSocket before accept: " + server ) ; // add for log4j: log a message with the info level logger.info ( "Java server with log4j, on-line!" ) ; // wait for client’s connection socket = server.accept() ; // add for log4j: log a message with the info level logger.info ( "ServerSocket after accept: " + server ) ; in = socket.getInputStream() ; out = socket.getOutputStream() ; } catch ( IOException e ) { // add for log4j: log a message with the error level logger.error ( "Server constructor IOException: " + e ) ; System.exit ( 0 ) ; } reader = new BufferedReader ( new InputStreamReader ( in ) ) ; writer = new PrintWriter ( new OutputStreamWriter ( out ), true ) ; // send welcome string to client writer.println ( "Java server with log4j, " + new Date () ) ; while ( true ) { try { // read from client clientRequest = reader.readLine () ; // add for log4j: log a message with the debug level logger.debug ( "Client says: " + clientRequest ) ; if ( clientRequest.startsWith ( "HELP" ) ) { // add for log4j: log a message with the debug level logger.debug ( "OK!" ) ; writer.println ( "Vocabulary: HELP QUIT" ) ; } else { if ( clientRequest.startsWith ( "QUIT" ) ) { // add for log4j: log a message with the debug level logger.debug ( "OK!" ) ; System.exit ( 0 ) ; } else { // add for log4j: log a message with the warn level logger.warn ( "Command ’" + clientRequest + "’ not understood." ) ; writer.println ( "Command ’" + clientRequest + "’ not understood." ) ; } } } catch ( IOException e ) { // add for log4j: log a message with the error level logger.error( "IOException in Server " + e ) ; System.exit ( 0 ) ; } } } }

2.2.3. 配置文件

2.2.3.1. 客户程序配置文件

log4j.rootLogger=INFO, A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

2.2.3.2. 服务器程序配置文件

log4j.rootLogger=INFO, A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

2.3. 比较

比较这两个应用可以看出,采用Log4j进行日志操作的整个过程相当简单明了,与直接使用System.out.println语句进行日志信息输出的方式相比,基本上没有增加代码量,同时能够清楚地理解每一条日志信息的重要程度。通过控制配置文件,我们还可以灵活地修改日志信息的格式,输出目的地等等方面,而单纯依靠System.out.println语句,显然需要做更多的工作。

下面我们将以前面使用Log4j的应用作为例子,详细讲解使用Log4j的主要步骤。

3. Log4j基本使用方法

Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。

3.1.定义配置文件

其实您也可以完全不使用配置文件,而是在代码中配置Log4j环境。但是,使用配置文件将使您的应用程序更加灵活。

Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。下面我们介绍使用Java特性文件做为配置文件的方法:

  1. 配置根Logger,其语法为:
    log4j.rootLogger = [ level ] , appenderName, appenderName, …
    其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。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(包含日志产生的时间、线程、类别等等信息)

3.2.在代码中使用Log4j

下面将讲述在程序代码中怎样使用Log4j。

3.2.1.得到记录器

使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:

public static Logger getLogger( String name),

通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:

static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () ) ;

3.2.2.读取配置文件

当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:
BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。
PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。
DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。

3.2.3.插入记录信息(格式化日志信息)

当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:

Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
SBM与超效率SBM模型实战:从原始面板数据到MATLAB高效实现 本文详细介绍了SBM模型与超效率SBM模型的核心原理,并提供了从原始面板数据预处理到MATLAB高效实现的完整实战指南。通过具体代码解析,帮助研究者掌握如何利用MATLAB进行数据标准化、模型构建、效率求解及结果可视化,从而精准评估决策单元的相对效率,尤其适用于在高效单元中进一步精细排名的场景。 阅读详情

相关推荐

《点亮创新灯塔!AI应用架构师与中小学初等教育AI智能体,共筑智能化教育辅助创新灯塔》

中小学AI智能体,是基于AI技术,能感知教育场景、理解教育规律、辅助教师教学和学生学习的智能系统。做老师“做不了”的事:比如5分钟批改45本作业,精准统计每个学生的易错点;做老师“做不好”的事:比如根据学生的学习风格(视觉/听觉/动觉)推荐个性化内容;绝不做老师“该做的事”:比如情感交流、价值观引导、创意教学设计——这些“人的温度”,AI永远无法替代。我是林宇,资深AI应用架构师,专注教育AI领域8年,参与过10多个中小学AI智能体项目,曾为北京、上海、深圳等城市的100多所学校提供AI教育解决方案。

Java大师兄的博客 433

日志框架log4j升级至log4j2

大家好,我是默语,擅长全栈开发、运维和人工智能技术。在这篇博客中,我将详细介绍如何将日志框架从Log4j升级到Log4j2,确保在项目中实现更高效、更安全的日志管理。关键词:Log4j2升级、日志框架、Java日志、SLF4J、Log4j2配置。升级步骤具体操作删除Log4j核心包注释Log4j依赖,并排除第三方包引入的Log4j引入Log4j2和SLF4J桥接包添加Log4j2核心包和SLF4J与Log4j2的桥接包修改日志打印代码使用SLF4J的LoggerFactory进行日志打印。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 6万+

发那科机器人弧焊指令实战:从Search指令到组掩码设置的完整避坑指南

本文详细解析了发那科机器人弧焊指令系统的实战应用,从Search指令的正确使用到组掩码设置的避坑技巧。通过实际案例和参数优化建议,帮助工程师提升焊接质量和生产效率,避免常见错误操作。特别针对T2模式示教难题和外部轴协调运动提供了专业解决方案。

weixin_29040367的博客 185

Slf4j与log4j及log4j2的关系及使用方法

Slf4j与log4j及log4j2的关系及使用方法 slf4j slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,所以单独的slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如log4j或者log4j2,要在系统中使用slf4j,我们需要引入的核心包为:slf4j-api-1.6.4.jar。 如果不...

dingyufei的博客 8138

大模型呼叫中心场景分享之六:大模型外呼IT运维告警——智能监控与自动化响应的未来

在数字化运维(IT Operations)中,实时监控系统健康状态并及时响应告警是保障业务连续性的关键。传统的IT告警方式(如邮件、短信、钉钉/企业微信通知)存在信息过载、响应延迟、人工处理效率低等问题。而大模型(LLM)与语音技术(TTS/ASR)的结合,为IT运维告警提供了更智能的解决方案——大模型外呼告警系统。大模型外呼告警系统正在重新定义IT运维的效率和体验。通过实时语音交互+智能自动化,企业能够将平均故障修复时间(MTTR)从小时级缩短至分钟级。

开源呼叫中心系统FreeIPCC的博客 924

Linux平台CCS安装配置完整示例

手把手讲解在Linux系统中完成CCS安装与环境配置的全过程,涵盖关键步骤与常见问题解决,是查找ccs安装教程时不可多得的实战指南。

weixin_42601134的博客 514

Java Log4j和Log4j2的区别

Java Log4j和Log4j2的区别 一、核心JAR包 log4j核心包:log4j:log4j:[version] 而log4j2的核心包有2个: org.apache.logging.log4j:log4j-core:[version] org.apache.logging.log4j:log4j-api:[version] 二、配置文件 log4j:通过一个log4j....

zhibin的程序日记 1万+

EDK2多平台编译实战:从树莓派到RK3399的UEFI固件构建

本文提供了从树莓派到RK3399的EDK2多平台编译实战指南。详细介绍了UEFI固件构建的环境搭建、交叉编译配置、平台描述文件修改及常见问题排查,帮助开发者掌握为不同ARM架构硬件构建标准化启动固件的核心技能。

weixin_29193259的博客 836

log4j2模板,log4j模板,log4j相关属性

文章目录1. log4j2模板1.1 `pom.xml`依赖1.2 `log4j2.xml`配置文件1.3 java中使用2. log4j模板2.1 `pom.xml`依赖2.2 `log4j.properties` 源配置2.3 `log4j.properties` 配置解释【***】2.4 java中使用学习参考地址 1. log4j2模板 1.1 pom.xml依赖 <dependency> <groupId>org.apache.logging.log4j&l

Java小皮孩 2813

【Frida Android】实战篇4:SSL Pinning 证书绑定绕过 Hook 教程(一)

在前两章中,我们学习了中间人抓包与 Hook 抓包的基础方法,这些方法在理想环境下能够有效获取网络请求数据。但在实际的企业级应用中,出于安全防护需求,很多 APP 会启用证书绑定(SSL Pinning)机制。这种机制会让客户端对服务器证书的校验更为严格,导致常规的抓包方法(即使将 BurpSuite/Charles 证书安装到系统信任区)也无法生效。因此,从本章开始,我们将系统学习 SSL Pinning 机制的绕过技术。SSL Pinning(证书绑定)是客户端校验服务器身份的进阶安全机制。

水滴石穿 1611

rk3588平台USB 3.0 -OAK深度相机适配方法

摘要:本文记录了OAK摄像头设备的配置与测试流程。主要内容包括:1)添加USB设备udev规则;2)拉取相关依赖库;3)安装Python3和pip;4)安装项目依赖;5)安装FFmpeg工具;6)测试摄像头功能并转换视频格式;7)将测试视频拷贝到U盘查看。操作步骤涵盖了从设备驱动配置到功能测试的完整流程,提供了详细的命令行操作指引。通过该文档可快速完成OAK摄像头的环境搭建和基础功能验证。

yy_hear的博客 325

关于slf4j、log4j、log4j2 以及使用log4j-1.2-api将log4j适配到log4j2上的案例

关于 关于slf4j、log4j、log4j2 等的概念,以及介绍将三方库中的 log4j1 输出的日志转接到log4j2上的方式。

zhy1379的博客 5208

HyperLynx(三十一)高速串行总线仿真(三)

(5)选择 “File”→ “Open Touchstone”,打开路径 C:\Adv_HL_Tmg\SERDES_Interface\models,选中connector.s4p,单击打开,如图所示。接下来,找出将要分配模型的S参数连接。(12)单击“Assign”按钮,选择模型类型为“Touchstone models”,在库中选择“connector.s4p”,如图所示。(14)单击“OK”按钮,选中“connector.s4p”这一行,单击“Connection Editor”按钮,如图所示。

小幽余生不加糖 3367

log4j和log4j2配置详解

文章目录1 log4j或log4j2配置详解1.1 pom.xml文件1.2 log4j.properties的引用1.3 log4j.properties的说明1.3.1 rootLogger文件1.3.2 输出目的地appender文件1.3.2.1 ConsoleAppender1.3.2.2 FileAppender1.3.2.3 DailyRollingFileAppender1.3.2...

上善若泪 6096

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Log4j和Log4j2

文章目录Log4j和Log4j2的使用1、Log4j简介使用步骤2、Log4j2简介使用步骤 Log4j和Log4j2的使用 官网 1、Log4j 简介 百度百科:Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义...

为梦想发声 535

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

log4j2的使用

log4j2默认在classpath下查找配置文件,可以修改配置文件的位置。如果是web项目,在web.xml中添加log4j2默认加载classpath下的 log4j2.xml 文件中的配置。如果找不到配置文件,Log4j 将提供默认配置。在写配置文件前。我们先学习一下常用的占位符:%d{HH:mm:ss.SSS} ,表示输出到毫秒的时间%t,输出当前线程名称%-5level,输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0。

m0_61160520的博客 2270

log4j与log4j2性能对比及log4j升级至log4j2方案

1.前言 之前某个服务在压测环境中出现了问题,分析之后得知是log4jLogger对象争用厉害,很多线程阻塞在此。 以上问题证明log4j在高并发高QPS情况下,是存在性能问题的。 之后把log4j升级成了log4j2,并采取异步日志模式,解决了因日志造成的性能问题。 2.性能对比 关于log4j与log4j2的性能对比文章有很多,本文不过多描述,给出几张结论图及原文链接,作为参考...

韩超的博客 (hanchao5272) 1万+

log4j升级log4j2

项目版本统一升级 主要就是三点一、去除log4j原来的相关的引用 具体是这几个包,maven相关就找对应名字就对了 这些都是关于log4j1的二、添加新的log4j2的相关引用 其中 来源https://blog.youkuaiyun.com/catoop/article/details/121858136 log4j-1.2-api.jar --> (log4j -> log4j2) 将log4j 的日志转接到log4j2日志...

qq_44181748的博客 5198

Log4j(四)——Log4j1与Log4j2的区别

前言 几乎每个大型应用程序都包含自己的日志或跟踪API。为了符合这一规则,欧盟SEMPRER项目决定编写自己的跟踪API。这是在1996年初。经过无数次的增强、几个版本和大量的工作之后,API演变成了log4j,这是一个流行的Java日志包。这个包是在Apache Software License下发布的,Apache Software License是由开源组织认证的完全成熟的开源许可证。 然而随着技术的发展,Log4j的结构、性能被很多新的日志框架所替代。它在设计结构上比不上slf4j,在性能上比不上l

野犬17的博客 3790

Log4j和Log4j2的区别

本文系转载,版权属于原作者,本想只添加链接在下面,但为了防止链接失效,还是将原文粘贴在下面 原文地址:https://www.cnblogs.com/WangBoBlog/p/7841217.html Log4j和Log4j2的区别 log4j是Apache的一个开源项目,log4j2和log4j是一个作者,只不过log4j2是重新架构的一款日志组件,他抛弃了之前log4j的不足,以及...

liangshui999的博客 2306

开源轮子 - Log4j和Log4j2

开源轮子 - Log4j和Log4j2

qq_43350524的博客 952

java log4j配置及使用_Log4j配置及使用

一、log4j.properties配置文件Log4j默认的配置文件是log4j.properties,将该文件置于classpath下,容器启动时会初始化Log4j。Log4j把日志级别由低到高依次分为ALL、TRACE、DEBUG、INFO、WARN、ERROR、FITAL和OFF等。其中,级别高的会屏蔽低的信息。如果设置为WARN,则INFO、DEBUG都不会输出。二、5个重要的概念Log4...

weixin_35340181的博客 919

[java][log4j]最详细的Log4j使用教程

其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。当然除了上面的配置方法,还有其它,比如做一个J2EE应用,在J2EE应用使用Log4j,必须先在启动服务时加载Log4j的配置文件进行初始化,可以在web.xml中进行。配置文件的大致内容:log4j可以指定输出的log级别的最低等级,以及log的输出配置格式,每个log可以指定多个输出方式。

一名不太专业的程序员 4300

如何使用Log4j?

  今天练习Spring的AOP时,总是先给我几个警告,说是没有设置Log4j,嗯,这可不好,所以花了点时间看了看manual以及网上的文章,终于算是搞得差不多了,下面是一些心得。1、 Log4j是什么?  相信任何开发过大一点点系统的人都知道将程序开发或运行过程中的一些信息输出到屏幕或文件中是非常重要的,它可以帮助调试(有时候debug是发挥不了作 用的)和分析,Log4j正是提供这种功能的一个

SpringFramework 7953

log4j及log4j2学习

log4j 1. log4j简介 定义每一条日志信息的级别,更加细致地控制日志的生成过程; 控制每一条日志的输出格式; 控制日志信息输送的目的地是控制台、文件等。 log4j包含三个组件,分别是 Loggers(记录器-区分日志类别)、Appenders(输出源-日志输出的地方)、Layouts(日志布局-日志的输出形式) Loggers:负责产生日志,能够对日志进行筛选,控制什么样的日志可以被输出,什么样的日志应该被忽略。可分为五个级别:DEBUG、INFO、WARN、ERROR、FATAL,从左到

Can96的博客 891
上一篇: Java与正则表达式(一)
下一篇: Apache-common包之common-cli笔记
socoolfj
博客等级 码龄21年 9粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值