log4j讲解

合集下载

log4j文件切分规则

log4j文件切分规则

log4j文件切分规则一、引言log4j是一个Java日志框架,方便开发者记录应用程序的运行日志并进行管理。

在使用log4j时,我们可以通过配置文件来定义日志的输出方式和切分规则。

本文将重点讨论log4j文件切分规则。

二、按文件大小切分在日志文件的切分规则中,按文件大小切分是最常见的一种方式。

通过配置log4j,我们可以设置一个文件的最大大小,当该文件达到最大大小时,log4j会自动将其备份,并创建一个新的日志文件来记录日志。

这种方式可以确保每个日志文件不会过大,方便查阅和管理。

三、按日期切分除了按文件大小切分,log4j还支持按日期切分日志文件。

通过设置切分的时间间隔,log4j会在指定的时间点自动将当前日志文件备份,并创建一个新的日志文件来记录后续的日志信息。

这种方式可以按照日期来管理日志文件,方便按照时间段进行查阅。

四、按文件数量切分除了按文件大小和日期切分,log4j还支持按文件数量切分日志文件。

通过设置切分的文件数量,当日志文件数量达到指定值时,log4j会自动将最早的日志文件备份,并创建一个新的日志文件来记录新的日志信息。

这种方式可以保持日志文件数量的稳定,避免文件过多导致管理困难。

五、动态切分规则在log4j中,我们可以通过配置动态切分规则来灵活地管理日志文件。

例如,我们可以根据业务需求,定义不同的切分规则,如按照不同的模块或日志级别进行切分。

这样可以根据具体的需求来管理日志文件,使日志信息更加有意义和可读性。

六、配置示例下面是一个示例的log4j配置文件,展示了如何设置文件切分规则:```log4j.rootLogger=INFO, filelog4j.appender.file=org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=/path/to/log/file.loglog4j.appender.file.MaxFileSize=10MBlog4j.appender.file.MaxBackupIndex=10yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n```在上述配置中,我们定义了一个名为file的appender,它是一个RollingFileAppender。

log4j maxbackupindex默认值 -回复

log4j maxbackupindex默认值 -回复

log4j maxbackupindex默认值-回复Log4j是Java中一个常用的日志记录工具,它提供了强大的日志功能,可以选择将日志存储到不同的位置和格式中。

其中一个重要的配置项是maxBackupIndex,默认情况下它的值是1。

本文将对maxBackupIndex 进行详细讲解。

首先,我们需要了解什么是maxBackupIndex。

在Log4j中,maxBackupIndex表示保留备份日志文件的个数。

当日志文件达到最大大小时,Log4j会自动将当前的日志文件备份,并创建一个新的日志文件。

maxBackupIndex用来控制备份文件的数量,它确保我们可以保留一定数量的备份文件,以便追溯日志记录的历史。

默认情况下,maxBackupIndex的值是1。

这意味着只会保留一个备份文件。

当日志文件达到最大大小时,Log4j会将当前的日志文件备份,并创建一个新的日志文件,旧的备份文件将被删除。

因此,默认情况下我们只能追溯到最近一次备份的日志记录。

那么为什么要使用备份文件呢?备份文件在日志记录过程中起到了重要的作用。

首先,备份文件能够保留以前的日志记录,这对于故障排查和系统监控非常重要。

其次,对于较大的应用程序,日志文件的大小可能会增长得非常快,追溯日志记录的历史可能会受到限制。

使用备份文件可以在一定程度上解决这个问题。

如果我们需要保留更多的备份文件,我们可以通过修改maxBackupIndex 的值来实现。

可以将maxBackupIndex设置为其他正整数,表示保留的备份文件的个数。

例如,将maxBackupIndex设置为5,表示我们可以保留5个备份文件。

当日志文件达到最大大小时,Log4j会将当前的日志文件备份,并创建一个新的日志文件。

最老的备份文件将被删除,以保持备份文件数量的固定。

当然,我们也可以将maxBackupIndex设置为0或者负数。

如果将maxBackupIndex设置为0,表示不保留任何备份文件。

log4j基本使用方法

log4j基本使用方法

log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。

首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址:/log4j/1.2/download.html我们先看一个最简单的示例:【示例1】项目结构:【注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar档的Java工程,然后将jar档放到lib目录下。

在要使用的工程中按图所示进行引用】Java代码:Java代码1package com.coderdream.log4j;23import org.apache.log4j.Logger;45public class HelloLog4j {67private static Logger logger = Logger.getLogger(HelloLog4j.class);89/**10* @param args11*/12public static void main(String[] args) {13// System.out.println("This is println message.");1415// 记录debug级别的信息16logger.debug("This is debug message.");17// 记录info级别的信息("This is info message.");19// 记录error级别的信息20logger.error("This is error message.");21}22}配置文件log4j.properties:Properties代码23#可以设置级别:debug>info>error24#debug:显示debug、info、error25#info:显示info、error26#error:只error27log4j.rootLogger=debug,appender128#log4j.rootLogger=info,appender129#log4j.rootLogger=error,appender13031#输出到控制台32log4j.appender.appender1=org.apache.log4j.ConsoleAppender33#样式为TTCCLayoutyout=org.apache.log4j.TTCCLayout输出结果:Console代码35[main] DEBUG com.coderdream.log4j.HelloLog4j - This is debug message.36[main] INFO com.coderdream.log4j.HelloLog4j - This is info message.37[main] ERROR com.coderdream.log4j.HelloLog4j - This is error message. 通过配置文件可知,我们需要配置3个方面的内容:1、根目录(级别和目的地);2、目的地(控制台、文件等等);3、输出样式。

log4j

log4j
设置日志消息的初始级别 设置日志信息是否立即输出, 默认为true 设置操作类型 System.out 默认值 System.err
FileAppender Threshold ImmediateFlush File
设置日志消息的初始级别 设置日志信息是否立即输出,默认为true 设置输出的文本 默认值是true,新增文件内容是否覆盖原 有内容,false为覆盖
org.apache.log4j.PatternLayout 可以灵活地指定布局模式 ConversionPattern=%m%n :指定怎样格式化指定的消息.
占位符参考log4j API
org.apache.log4j.SimpleLayout
包含日志信息的级别和信息字符串,内 置的简单布局没有提供自定义设置 包含日志产生的时间,线程,类别等等 信息
Append
DailyRollingFileAppender DatePattern的格式符 的格式符 Threshold '.'yyyy-MM
设置日志消息的初始级别 每月
#在配置文件中设置: '.'yyyy-ww 每周 ImmediateFlush 设置日志信息是否立即输出,默认为true #设置为每月输出 log4j.appender.MyAppenderName.DatePattern = '.'yy-MM '.'yyyy-MM-dd 每天 //在程序中使用 设置输出的文本 File //设置为每月输出 '.'yyyy-MM-dd-a 每天两次 myFile. setDatePattern ("'.true,新增文件内容是否覆盖原 '.'yyyy-MM-dd-HH 每小时 有内容,false为覆盖

log4j2配置文件log4j2.xml解析

log4j2配置文件log4j2.xml解析

log4j2配置⽂件log4j2.xml解析⼀、背景最近由于项⽬的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之⽽来的slf4j整合log4j的配置(使⽤Slf4j集成Log4j2构建项⽬⽇志系统的完美解决⽅案)以及log4j2配置⽂件的详解,就需要我们来好好聊⼀聊了。

本⽂就专门来讲解下log4j2.xml配置⽂件的各项标签的意义。

⼆、配置全解1.关于配置⽂件的名称以及在项⽬中的存放位置log4j 2.x版本不再⽀持像1.x中的.properties后缀的⽂件配置⽅式,2.x版本配置⽂件后缀名只能为”.xml”,”.json”或者”.jsn”.系统选择配置⽂件的优先级(从先到后)如下:(1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的⽂件.(2).classpath下的名为log4j2-test.xml的⽂件.(3).classpath下名为log4j2.json 或者log4j2.jsn的⽂件.(4).classpath下名为log4j2.xml的⽂件.我们⼀般默认使⽤log4j2.xml进⾏命名。

如果本地要测试,可以把log4j2-test.xml放到classpath,⽽正式环境使⽤log4j2.xml,则在打包部署的时候不要打包log4j2-test.xml即可。

2.缺省默认配置⽂件<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></Console></Appenders><Loggers><Root level="error"><AppenderRef ref="Console"/></Root></Loggers></Configuration>3.配置⽂件节点解析(1).根节点Configuration有两个属性:status和monitorinterval,有两个⼦节点:Appenders和Loggers(表明可以定义多个Appender和Logger). status⽤来指定log4j本⾝的打印⽇志的级别.monitorinterval⽤于指定log4j⾃动重新配置的监测间隔时间,单位是s,最⼩是5s.(2).Appenders节点,常见的有三种⼦节点:Console、RollingFile、File.Console节点⽤来定义输出到控制台的Appender.name:指定Appender的名字.target:SYSTEM_OUT 或 SYSTEM_ERR,⼀般只设置默认:SYSTEM_OUT.PatternLayout:输出格式,不设置默认为:%m%n.File节点⽤来定义输出到指定位置的⽂件的Appender.name:指定Appender的名字.fileName:指定输出⽇志的⽬的⽂件带全路径的⽂件名.PatternLayout:输出格式,不设置默认为:%m%n.RollingFile节点⽤来定义超过指定⼤⼩⾃动删除旧的创建新的的Appender.name:指定Appender的名字.fileName:指定输出⽇志的⽬的⽂件带全路径的⽂件名.PatternLayout:输出格式,不设置默认为:%m%n.filePattern:指定新建⽇志⽂件的名称格式.Policies:指定滚动⽇志的策略,就是什么时候进⾏新建⽇志⽂件输出⽇志.TimeBasedTriggeringPolicy:Policies⼦节点,基于时间的滚动策略,interval属性⽤来指定多久滚动⼀次,默认是1 hour。

log4j的原理

log4j的原理

log4j的原理log4j是一个Java编程语言的日志记录框架,它是Apache软件基金会的一个项目。

log4j的主要目的是为应用程序提供一种简单灵活的方法来记录日志。

它支持多个输出方式,可以将日志信息输出到控制台、文件、数据库等不同的目标。

以下是log4j的原理。

1. Logger:log4j的核心组件是Logger,它负责记录日志信息。

Logger对象用于应用程序中,通过它可以创建不同的记录器。

记录器是log4j的实例,主要用于记录特定类或特定模块的日志信息。

2. Appender:Appender是Logger的附加组件,它用于指定日志信息的输出目标。

log4j支持多种Appender,包括ConsoleAppender(输出到控制台)、FileAppender(输出到文件)、JDBCAppender(输出到数据库)等。

通过配置文件,可以指定将日志信息输出到一个或多个Appender。

3. Layout:Layout用于指定日志记录的格式。

log4j提供多种Layout,包括简单的文本格式、HTML格式、XML格式等。

通过配置文件,可以选择适合自己需求的Layout,并将其与Appender关联起来。

4. Level:Level用于定义日志信息的严重程度。

log4j提供6种Level,从低到高分别是TRACE、DEBUG、INFO、WARN、ERROR和FATAL。

通过配置文件,可以为每个Logger指定不同的Level。

当日志信息的Level高于或等于Logger的Level时,才会被记录。

5. Filter:Filter用于过滤日志信息。

log4j支持多种Filter,包括DenyAllFilter(拒绝所有日志信息)、LevelRangeFilter(限制日志级别范围)、StringMatchFilter(匹配字符串过滤器)等。

通过配置文件,可以为每个Logger指定一个或多个Filter,用于过滤不符合条件的日志信息。

log4j maxbackupindex默认值

log4j maxbackupindex默认值

log4j maxbackupindex默认值log4j的maxBackupIndex默认值log4j是Java中广泛使用的一款日志记录框架。

在log4j中,可以通过配置文件来定义日志的输出形式和级别,以及一些其他的参数。

其中一个重要的参数是maxBackupIndex,它用于定义保存的日志文件的最大数量。

本文将详细介绍log4j的maxBackupIndex参数的默认值以及如何使用它。

1. log4j的maxBackupIndex参数简介当使用log4j记录日志时,日志文件可能会不断增长,如果不加以限制,将会占用大量的存储空间。

为了避免这种情况的发生,log4j提供了maxBackupIndex参数,它用于指定要保留的日志文件的最大数量。

当超出指定数量时,最老的日志文件将会被删除。

2. log4j的maxBackupIndex参数的默认值log4j的maxBackupIndex参数默认值为1。

这意味着只会保存一个日志文件,当有新的日志文件生成时,原有的日志文件将会被删除。

这样做的好处是可以节约存储空间,但也会导致无法恢复较早的日志信息。

3. 修改log4j的maxBackupIndex参数若想增加保存的日志文件的数量,可以通过修改log4j的配置文件来设置maxBackupIndex参数的值。

在log4j.properties或log4j.xml文件中,找到对应的Appender,然后在其配置中找到maxBackupIndex参数,直接修改它的值即可。

例如,将maxBackupIndex的值修改为3,表示保留最近的三个日志文件。

4. maxBackupIndex参数的取值范围maxBackupIndex参数的取值范围为0或正整数。

当maxBackupIndex 的值为0时,表示不保留任何日志文件。

若设为负数,则会导致配置文件解析错误,从而使日志记录无效。

5. maxBackupIndex参数的应用场景maxBackupIndex参数的应用场景根据实际需求而定。

log4j2Filter用法详解

log4j2Filter用法详解

log4j2Filter⽤法详解主要说下组合过滤器 CompositeFilter ,⽐较常⽤<Filters>是组合过滤器额标签,它包含的⼦标签是具体的过滤器,这三个具体过滤器分别是⽇志等级过滤器,正则表达式过滤器和时间过滤器。

需要说明的是onMatch和onMismatch可以选择的值及其含义。

可选的值分别是,ACCEPT, DENY, NEUTRAL,ACCEP和DENY⽐较好理解就是接受和拒绝的意思,在使⽤单个过滤器的时候,⼀般就是使⽤这两个值。

但是在组合过滤器中,如果⽤接受ACCEPT的话,⽇志信息就会直接写⼊⽇志⽂件,后续的过滤器不再进⾏过滤。

--- 有点像switch case break; 直接截断了不会往下判断了。

在组合过滤器中,接受使⽤NEUTRAL(中⽴),被第⼀个过滤器接受的⽇志信息,会继续⽤后⾯的过滤器进⾏过滤,只有符合所有过滤器条件的⽇志信息,才会被最终写⼊⽇志⽂件。

--- 也就是层层过滤的意思,要都满⾜条件才能写⼊⽇志例⼦1<!-- 所要过滤的内容必须是⽇志内容详情,前⾯的包名不算 --><Filters><ThresholdFilter level="TRACE" onMatch="NEUTRAL" onMismatch="DENY"/><RegexFilter regex=".* test .*" onMatch="NEUTRAL" onMismatch="DENY"/><TimeFilter start="05:00:00" end="05:30:00" onMatch=" NEUTRAL " onMismatch="DENY"/></Filters>例⼦2 意思是⽇志内存包含 HiveSql 或 hive lines 或 sql_type 或 => 的INFO及其INFO以下级别的⽇志<Filters><ThresholdFilter level="INFO" onMatch="NEUTRAL" onMismatch="DENY"/><RegexFilter regex=".*(HiveSql|hive lines|sql_type).*" onMatch="NEUTRAL" onMismatch="DENY"/><RegexFilter regex=".*=>.*" onMatch="NEUTRAL" onMismatch="DENY"/></Filters>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2 、log4j.appender.stdout=org.apache.log4j.ConsoleAppender
此句为定义名为stdout的输出端是哪种类型,可 以是 org.apache.log4j.ConsoleAppender(控制台), org.apache.log4j.FileAppender(文件), org.apache.log4j.DailyRollingFileAppender(每 天产生一个日志文件), org.apache.log4j.RollingFileAppender(文件大 小到达指定尺寸的时候产生一个新的文件) org.apache.log4j.WriterAppender(将日志信息 以流格式发送到任意指定的地方)
yout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n
如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern, 打印参数如下: %m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该log信息耗费的毫秒数 %c 输出所属的类目, 通常就是所在类的全名 %t 输出产生该日志事件的线程名 %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” %c 输出所属的类目,通常就是所在类的全名 %d输出日志时间点的日期或 时间,默认格式为ISO8601,也可以在其后指定格式 {yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的 行数。 [QC]是log信息的开头,可以为任意字符,一般为项目简称。 输出的信息 : [TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'
3、yout=org.apache.log4j.PatternLayout
此句为定义名为stdout的输出端的layout是 哪种类型,可以是 org.apache.log4j.HTMLLayout(以HTML 表格形式布局), org.apache.log4j.PatternLayout(可以灵 活地指定布局模式), org.apache.log4j.SimpleLayout(包含日 志信息的级别和信息字符串), org.apache.log4j.TTCCLayout(包含日志 产生的时间、线程、类别等等信息)
Log4j讲解
1、log4j简介 2、log4j的配置文件中实现 3、log4j的程序代码中实现
一、Log4j简介
• Log4j是Apache的一个开放源代码项目, 通过使用Log4j,我们可以控制日志信息输 送的目的地是控制台、文件、GUI组件、甚 至是套接口服务器、NT的事件记录器、 UNIX Syslog守护进程等;我们也可以控 制每一条日志的输出格式;通过定义每一 条日志信息的级别,我们能够更加细致地 控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地 进行配置,而不需要修改应用的代码。
Байду номын сангаас
二、配置文件中实现
步骤
1、加入log4j-1.2.8.jar到lib下。 第二步 2、在CLASSPATH下建立log4j.properties。 3、相应的修改其中属性,修改之前就必须知 道这些都是干什么的,在第二部分讲解。 4、在要输出日志的类中加入相关语句: 定 义属性:static Logger logger = Logger.getLogger(XXX.class); 再用一个 Log.*()方法。
1、 log4j.rootCategory=INFO, stdout , R
此句为将等级为INFO的日志信息输出 到stdout和R这两个目的地,stdout和R的 定义在下面的代码,可以任意起名。等级 可分为OFF、FATAL、ERROR、WARN、 INFO、DEBUG、ALL,如果配置OFF则 不打出任何信息,如果配置为INFO这样只 显示INFO, WARN, ERROR的log信息, 而DEBUG信息不会被显示,具体讲解可 参照第三部分定义配置文件中的logger。
4、log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log
此句为定义名为R的输出端的文件名为 D:\\Tomcat 5.5\\logs\\qc.log可以自行修改。
相关文档
最新文档