Log4j的简单运用
- 格式:docx
- 大小:20.11 KB
- 文档页数:4
log4j的使用方法log4j的使用方法什么是log4jlog4j是一个使用Java编写的开源日志记录工具。
它允许开发人员在程序中进行灵活的日志记录,帮助定位和修复应用程序的错误和问题。
log4j通过配置文件确定日志记录的级别和输出方式,提供了丰富的功能和灵活性。
log4j的基本配置1.导入log4j的依赖库:添加以下依赖到你的项目中的``文件中:<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version></version></dependency>2.创建log4j的配置文件:在项目的资源目录下创建一个名为``的文件,并添加以下内容:# 设置日志输出到控制台=INFO, stdout# stdout将日志输出到控制台====%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n以上配置将日志记录级别设为INFO,并将日志输出到控制台。
3.初始化log4j:在你的应用程序入口处(比如main方法),添加以下代码进行log4j的初始化:import ;public class MyApp {public static void main(String[] args) {// 加载log4j的配置文件("");// 其他应用程序代码...}}log4j的日志级别与日志输出log4j提供了不同的日志级别,根据不同的需求可以进行设置。
1.日志级别:–TRACE:最详细的日志级别,常用于调试信息。
–DEBUG:用于调试和开发阶段的详细信息。
–INFO:提供程序的运行状态信息以及其他关键事件。
–WARN:表明潜在的问题,但程序仍能正常运行。
–ERROR:用于记录错误事件,但仍可继续执行。
–FATAL:严重错误,可能导致程序终止执行。
log4j 标准
Log4j是一个Java日志框架,它提供了一种灵活的方式来记录应用程序的
日志信息。
以下是Log4j的标准:
1. 配置文件:Log4j使用一个配置文件来定义日志记录的行为。
这个配置文件可以是XML、properties或YAML格式。
在配置文件中,可以指定日志级别、输出目的地(例如控制台、文件、数据库等)以及其他相关设置。
2. Logger对象:Log4j使用Logger对象来记录日志。
每个Logger对象
都有一个名称,可以通过继承关系组织成层次结构。
Logger对象可以记录
不同级别的日志信息,包括DEBUG、INFO、WARN、ERROR和FATAL。
3. Appender对象:Appender对象定义了日志信息的输出目的地。
例如,可以将日志信息输出到控制台、文件、数据库或电子邮件等。
每个Logger
对象可以关联多个Appender对象,以便将日志信息发送到不同的目的地。
4. 布局和格式化程序:Log4j使用布局或格式化程序来控制日志信息的输出格式。
布局或格式化程序可以将Logger对象记录的日志信息转换成所需的格式,并将其输出到指定的目的地。
5. 日志级别:Log4j使用不同的日志级别来控制日志信息的输出。
这些级别从低到高分别是DEBUG、INFO、WARN、ERROR和FATAL。
通过设置适当的级别,可以过滤掉不需要的日志信息,以便更好地控制应用程序的性能和输出。
总之,Log4j提供了一种灵活、可配置和可扩展的日志记录机制,适用于各种规模的应用程序开发。
log4j的几种用法
Log4j是一个流行的Java日志框架,它提供了多种用法来帮助开发人员记录和管理应用程序的日志信息。
以下是几种常见的
Log4j用法:
1. 配置日志级别,Log4j允许开发人员根据不同的需求配置日志级别,包括DEBUG、INFO、WARN、ERROR等级别。
通过配置,可以控制哪些日志消息会被记录下来,从而方便开发人员调试和排查问题。
2. 输出日志到不同的目的地,Log4j支持将日志消息输出到不同的目的地,比如控制台、文件、数据库等。
开发人员可以根据需求配置日志输出的目的地,以便对日志进行集中管理和分析。
3. 日志格式化,Log4j允许开发人员自定义日志消息的格式,包括时间戳、日志级别、类名、方法名等信息。
通过格式化,可以使日志消息更易读,方便开发人员理解和分析。
4. 日志过滤,Log4j提供了过滤器功能,可以根据特定的条件过滤掉不需要记录的日志消息,从而减少日志的冗余和提高日志记
录的效率。
5. 动态配置,Log4j支持动态配置,开发人员可以在应用程序运行时动态修改日志配置,比如调整日志级别、更改日志输出目的地等,而不需要重启应用程序。
总之,Log4j提供了丰富的功能和灵活的配置选项,可以帮助开发人员高效地记录和管理应用程序的日志信息。
通过合理地使用Log4j,开发人员可以更好地了解应用程序的运行状况,及时发现和解决问题。
log4j的原理Log4j是一个流行的Java日志框架,用于在Java应用程序中记录有意义的信息,从而提高了代码的可维护性和可扩展性。
它是由Apache软件基金会开发和维护的,目前最新版本是Log4j 2。
在使用Log4j时,我们需要使用Log4j API来记录日志,API中的代码会自动调用Log4j的核心引擎,该引擎负责处理日志请求。
为了提高性能,Log4j采用了异步处理技术,即日志请求不会立即写入日志文件,而是由一个专门的线程异步地将请求写入文件。
Log4j的核心组件包括Logger、Appender和Layout。
Logger是日志的核心组件,使用Logger类来记录日志,此外还能够控制日志的级别、过滤器等。
Appender用于将日志信息输出到不同的目标,如文件、控制台、数据库等。
Layout则用于指定日志的格式和输出目标。
Log4j还提供了一些其他的功能,如配置文件、过滤器和标记。
最常见的配置文件是log4j.properties和log4j.某ml,它们可以用来配置Logger、Appender、Layout等组件的属性和行为。
Filter可以用来过滤掉某些不符合条件的日志信息。
Marker用于标记某些重要的日志信息,可以用于分类和分析日志数据。
总体来说,Log4j的原理可以简单归纳为以下几点:1. Log4j API用于记录日志,同时调用Log4j的核心引擎处理日志请求;2.核心引擎采用异步处理技术,将日志请求异步地写入日志文件;3. 核心组件包括Logger、Appender和Layout,分别用于记录日志、输出日志和格式化日志信息;4.配置文件、过滤器和标记可以用于配置和控制日志的行为和输出。
Log4j能够帮助我们记录日志信息,有效地提高了代码的可维护性和可扩展性。
同时,Log4j还提供了丰富的配置和扩展功能,可以满足不同的应用需求。
详细的Log4j使⽤教程⽇志是应⽤软件中不可缺少的部分,Apache的开源项⽬是⼀个功能强⼤的⽇志组件,提供⽅便的⽇志记录。
在apache⽹站:可以免费下载到Log4j最新版本的软件包。
⼀、⼊门实例1.新建⼀个JAva⼯程,导⼊包log4j-1.2.17.jar,整个⼯程最终⽬录如下2、src同级创建并设置log4j.properties### 设置###log4j.rootLogger = debug,stdout,D,E### 输出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### 输出DEBUG 级别以上的⽇志到=E://logs/error.log ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = E://logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUGyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 输出ERROR 级别以上的⽇志到=E://logs/error.log ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File =E://logs/error.loglog4j.appender.E.Append = truelog4j.appender.E.Threshold = ERRORyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n3、设置⽇志内容package com.mucfc;import org.apache.log4j.Logger;/***@author linbingwen*@2015年5⽉18⽇9:14:21*/public class Test {private static Logger logger = Logger.getLogger(Test.class);/*** @param args*/public static void main(String[] args) {// System.out.println("This is println message.");// 记录debug级别的信息logger.debug("This is debug message.");// 记录info级别的信息("This is info message.");// 记录error级别的信息logger.error("This is error message.");}}4、输出结果(1)⾸先是控制台的信息(2)再来看输出的⽂件⼆、Log4j基本使⽤⽅法Log4j由三个重要的组件构成:⽇志信息的优先级,⽇志信息的输出⽬的地,⽇志信息的输出格式。
Java开发日志分析工具Log4j使用详解Log4j是一个用于记录应用程序运行时日志的Java开发工具。
它可以帮助开发人员更好地理解和监控应用程序的运行状态,以及解决潜在的问题。
下面将详细介绍Log4j的使用方法和功能。
一、Log4j的配置文件Log4j使用一个名为log4j.properties的配置文件来定义日志的输出格式、日志级别、输出目标等。
这个配置文件需要放在应用程序的classpath下,以便Log4j能够找到它并加载配置。
配置文件中的每一个配置项都有一个特定的名称和对应的值。
例如,可以使用"log4j.rootLogger"配置项来设置根日志记录器的级别,使用"log4j.appender.console"配置项来设置控制台输出的格式等。
二、Log4j的日志级别Log4j提供了多个日志级别,用于控制日志的输出。
这些日志级别按照严重程度递增,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL。
可以通过配置文件中的"log4j.rootLogger"配置项来设置根日志记录器的级别,从而决定哪些级别的日志会被记录。
三、Log4j的输出目标Log4j可以将日志输出到不同的目标,包括控制台、文件、数据库等。
可以通过配置文件中的"log4j.appender"配置项来设置输出目标。
常用的输出目标有:1. ConsoleAppender:将日志输出到控制台。
2. FileAppender:将日志输出到文件。
3. RollingFileAppender:将日志输出到滚动文件,可以设置文件的大小和数量,以便自动滚动日志文件。
4. JDBCAppender:将日志输出到数据库。
四、Log4j的日志格式Log4j可以自定义日志的输出格式。
可以通过配置文件中的"log4j.appender"配置项来设置输出格式。
Log4j使用总结(全面)二LOG4J的配置之简单使它普及于越来越多的应用中了:Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。
择其一二使用就够用了。
log4j.rootLogger=DEBUG,CONSOLE,A1,imlog4j.addivity.apache=true# 应用于控制台log4j.appender.CONSOLE=org.apache.log4j.ConsoleApp enderlog4j.appender.Threshold=DEBUGlog4j.appender.CONSOLE.Target=System.outyout=org.apache.log4j.Pat ternLayoutyout.ConversionPattern=[f ramework] %d - %c -%-4r [%t] %-5p %c %x - %m%n#yout.ConversionPattern=[ start]%d {DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thr ead]n%c[CATEGORY]%n%m[MESSAGE]%n%n#应用于文件log4j.appender.FILE=org.apache.log4j.FileAppenderlog4j.appender.FILE.File=file.loglog4j.appender.FILE.Append=falseyout=org.apache.log4j.Patter nLayoutyout.ConversionPattern=[fram ework] %d - %c -%-4r [%t] %-5p %c %x - %m%n# Use this layout for LogFactor 5 analysis# 应用于文件回滚log4j.appender.ROLLINGFILE=org.apache.log4j.Rolli ngFileAppenderlog4j.appender.ROLLINGFILE.Threshold=ERRORlog4j.appender.ROLLINGFILE.File=rolling.log //文件位置,也可以用变量${java.home}、rolling.loglog4j.appender.ROLLINGFILE.Append=true //true:添加false:覆盖log4j.appender.ROLLINGFILE.MaxFileSize=10KB //文件最大尺寸log4j.appender.ROLLINGFILE.MaxBackupIndex=1 //备份数yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n #应用于socketlog4j.appender.SOCKET=org.apache.log4j.RollingFile Appenderlog4j.appender.SOCKET.RemoteHost=localhostlog4j.appender.SOCKET.Port=5001log4j.appender.SOCKET.LocationInfo=true# Set up for Log Facter 5yout=org.apache.log4j.Patt ernLayoutyout.ConversionPattern=[sta rt]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread ]%n%c[C ATEGORY]%n%m[MESSAGE]%n%n# Log Factor 5 Appenderlog4j.appender.LF5APPENDER=org.apache.log4j.lf5.LF5Appenderlog4j.appender.LF5APPENDER.MaxNumberOfRecords=200 0# 发送日志给邮件log4j.appender.MAIL=org.apache.log4j..SMTPAppen derlog4j.appender.MAIL.Threshold=FATALlog4j.appender.MAIL.BufferSize=10log4j.appender.MAIL.From=web@.wuset.log4j.appender.MAIL.SMTPHost=.wusetu.log4j.appender.MAIL.Subject=Log4J Messagelog4j.appender.MAIL.To=web@.wusetu.yout=org.apache.log4j.Patter nLayoutyout.ConversionPattern=[fram ework] %d - %c -%-4r [%t] %-5p %c %x - %m%n# 用于数据库log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBC Appenderlog4j.appender.DATABASE.URL=jdbc:mysql://localhost :3306/te stlog4j.appender.DATABASE.driver=.mysql.jdbc.Driv erer=rootlog4j.appender.DATABASE.password=log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (’[framework] %d - %c -%-4r [%t] %-5p %c %x -%m%n’)yout=org.apache.log4j.Pa tternLayoutyout.ConversionPattern=[ framewor k] %d - %c -%-4r [%t] %-5p %c %x - %m%nlog4j.appender.A1=org.apache.log4j.DailyRollingFil eAppender log4j.appender.A1.File=SampleMessages.log4jlog4j.appender.A1.DatePattern=yyyyMMdd-HH’.log4j’yout=org.apache.log4j.xml.XMLL ayout #自定义Appenderlog4j.appender.im= .cybercorlin.util.logger.appender.IMAppenderlog4j.appender.im.host = mail.cybercorlin.ername = usernamelog4j.appender.im.password = passwordlog4j.appender.im.recipient = corlin@cybercorlin.yout=org.apache.log4j.PatternL ayoutyout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ?模板,内容仅供参考。
Log4J利用完全手册Log4J是Apache的一个开放源代码项目(,它是一个日记操作包。
通过利用Log4J,能够指定日记信息输出的目的地,控制每一条日记的输出格式,概念日记信息的级别。
所有这些功能通过一个配置文件灵活进行配置。
一、LOG4J组成LOG4J主要由三大组件组成:. Logger: 决定什么日志信息应该被输出、什么日志信息应该被忽略;. Appender: 指定日志信息应该输出到什么地方, 这些地方可以是控制台、文件、网络设备;. Layout: 指定日志信息的输出格式;一个Logger能够有多个Appender,也就是说日记信息能够同时输出到多个设备上,每一个Appender对应一种Layout(示例见下图)。
↗Appender1 →Layout/Logger﹨↘Appender2 →Layout二、Logger组件1. Logger组件提供的方式:Logger组件是LOG4J的核心组件,它代表了Log4J的日记记录器,它能够对日记信息进行分类挑选。
它由类实现,提供了如下方式:java 代码1.package2.3.public class Logger {4.在配置文件中配置Logger组件可在Log4J配置文件中配置自己的Logger组件,示例:以上代码概念了一个Logger组件,名称为myLogger,日记级别为WARN。
3. 日记级别种类:一共有五种,级别由高到低依次是:fatal、error、warn、info、debug。
取得Logger实例后,咱们可挪用以下方式之一输出日记信息:public void debug(Object message); 为何需要对日记进行分级?在写程序的时候,为了调试程序,我们会在很多出错的地方输出大量的日志信息。
当程序调试完,不需要这些信息时,将程序中这些输出日志信息代码删除吗?这样费时费力,对于大型程序几乎不可行。
通过对日志分级,假如不想输出WARN级别的日志信息,则Logger组件的级别调高即可,省时省心。
第一步:配置log4j.properties
在src目录下建立log4j.properties文件,做如下配置
1、配置log4j.rootLogger
log4j.rootLogger=INFO,A1,A2,…
INFO是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL和自定义级别,常用的优先级有四个,从高到低分别为ERROR,WARN,INFO,DEBUG,
A1,A2指的是日志输出地,可以配置多个输出地,比如此处配置了A1和A2两个输出地,A1,A2和名称可以任意命名,也可以改为log4j.rootLogger=INFO,CONLOSE,FILE
2、配置输出地信息(配置A1和A2信息)
1、配置A1信息
log4j.appender.A1=org.apache.log4j.ConsoleAppender //配置A1的输出地为控制台(以下为A1的详细配置)
log4j.appender.A1.Target=System.out
yout=org.apache.log4j.PatternLayout
yout.ConversionPattern=%d{[yyyy-MM-dd
k:m:s]} %p %m%n //信息输出格式
2、配置A2信息
log4j.appender.A2=org.apache.log4j.FileAppender //配置A2的输出地为文件
log4j.appender.A2.File=log.txt //日志输出文件名
log4j.appender.A2.Append=true //将日志信息追加到文件,false为覆盖到文件yout=org.apache.log4j.PatternLayout
yout.ConversionPattern=%d{[yyyy-MM-dd
k:m:s]} %p %m%n //信息输出格式
输出地详细介绍:
Log4j提供了以下几种appender:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个文件)
org.apache.log4j.RollingFileAppender(文件达到指定大小产生新文件)
org.apache.log4j.WriterAppender(以流的形式将日志发送到任意指定地方)
(1)ConsoleAppender
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
(2)FileAppender
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=log.txt:指定日志信息输出到log.txt文件
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
(3)DailyRollingFileAppender
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=log.txt:指定消息输出到log.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePatter n=’.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。
当然也可以指定按月、周、天、时和分。
即对应的格式如下:
1)’.'yyyy-MM: 每月
2)’.'yyyy-ww: 每周
3)’.'yyyy-MM-dd: 每天
4)’.'yyyy-MM-dd-a: 每天两次
5)’.'yyyy-MM-dd-HH: 每小时
6)’.'yyyy-MM-dd-HH-mm: 每分钟
(4)RollingFileAppender
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=log.txt:指定消息输出到log.txt文件
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到log.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
布局配置
Log4j提供以下几种layout
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
输出格式配置
在配置文件中可以通过yout.ConversionPattern设置日志输出格式。
参数:
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MM dd HH:mm:ss,SSS},输出类似:2011 07 16 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。
举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个”%”字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。
如:1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,”-”号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。
第二步:使用Log4j
简单案例:
log4j.properties配置文件:
log4j.rootLogger=INFO,CONSOLE,FILE
#应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
yout=org.apache.log4j.PatternLayout
yout.ConversionPattern=%d{[yyyy-MM-dd
k:m:s]}%p%m%n
#应用于文件
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.FILE.File=log/file.log
log4j.appender.FILE.Append=true
yout=org.apache.log4j.PatternLayout
log4j.appender.FILE.DatePattern='-'yyyyMMdd
yout.ConversionPattern=%d{yyyy-MM-dd
k:m:s}%p%m%n
在程序中
Logger log=Logger.getLogger(Class.class);
//Class为类名
(“输出的信息”);
运行结果
控制台:[2011-07-17 1:3:38] INFO 输出的信息
在工程的log文件夹中产生file.log-20110717文件或者file.log文件。