log4j的基本使用与配置文件

本文介绍了如何将log4j.jar导入项目并配置log4j.properties或log4j.xml,详细解析了rootLogger、appender和layout的配置,包括控制台输出、文件输出、日志级别和格式。此外,还展示了在代码中使用log4j进行日志记录的示例。
摘要由CSDN通过智能技术生成

一、导入log4j.jar到项目依赖中

二、添加如下两个配置文件中的一个到项目的src目录下

  1. properties配置方式
### 设置Logger输出级别和输出目的地(控制台和文件夹) ###
log4j.rootLogger=debug, stdout,logfile

### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
###控制台输出的格式为.err红色字体###
log4j.appender.stdout.Target=System.err
###控制台输出的布局方式###
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

### 把日志信息输出到文件:jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
### 设置输出文件夹的名字 ###
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
### 自定义输出日志的格式 ###
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n

#日志级别从高到低分为:
#A:off 最高等级,用于关闭所有日志记录。
#B:fatal 指出每个严重的错误事件将会导致应用程序的退出。
#C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
#D:warn 表明会出现潜在的错误情形。
#E:info 一般和在粗粒度级别上,强调应用程序的运行全程。
#F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
#G:all 最低等级,用于打开所有日志记录。

#Log4j提供的appender有以下几种:
#org.apache.log4j.ConsoleAppender(控制台),
#org.apache.log4j.FileAppender(文件),
#org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
#org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
#org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

# %d 输出日志时间点的日期或时间
# %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
# %F: 输出日志消息产生时所在的文件名称 
# %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
# %m: 输出代码中指定的消息,产生的日志具体信息
# %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
  1. xml配置方式
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-ddHH:mm:ss,SSS} %m (%F:%L) \n" />
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>

三、在代码中使用

public class Test7 {
	//定义一个Logger对象
	static Logger logger=Logger.getLogger(Test7.class);
	
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		try {
			System.out.println("请输入一个数");
			int num1=input.nextInt();//InputMismatchException  Exception
			System.out.println("再输入一个数");
			int num2=input.nextInt();//InputMismatchException
			int result=num1/num2;//ArithmeticException
			//使用logger对象输出结果,该结果会保存到日志文件中
			logger.debug("结果是"+result);
		}catch(InputMismatchException ex) {
			logger.error("只能输入数字");
		}catch(ArithmeticException ex) {
			logger.error("除数不能为0");
		}catch (Exception e) {
			logger.error("其它异常");
		}finally {
			logger.debug("程序结束");
		}
	}
}

四、log4j.properties配置文件解析

4.1 rootLogger的配置

### 设置Logger日志输出级别和输出目的地(控制台和文件夹) ###
log4j.rootLogger=level, appenderName1,appenderName2,appenderName3
  • level:配置Logger的日志输出级别,从高到底如下:
    • off:最高等级,用于关闭所有日志记录。
    • fatal:指出每个严重的错误事件将会导致应用程序的退出。
    • error:指出虽然发生错误事件,但仍然不影响系统的继续运行。
    • warn:表明会出现潜在的错误情形。
    • info: 一般和在粗粒度级别上,强调应用程序的运行全程。
    • debug: 一般用于细粒度级别上,对调试应用程序非常有帮助。
    • all: 最低等级,用于打开所有日志记录。
  • 一般使用errorwarninfodebug来调试日志记录的输出
  • appenderName1,appenderName2,appenderName3
    • 是日志信息输出位置,可以同时指定多个输出目的地(如上指定了三个输出位置),仅仅是一个变量名,使用appender来具体配置

4.2 appender配置日志的输出位置

#首先配置具体的输出类型
log4j.appender.appenderName = Log4j提供的appender类
#在配置其输出的样式和格式
log4j.appender.appenderName.属性名 = 属性值
log4j.appender.appenderName.属性名 = 属性值
log4j提供的appender
  1. org.apache.log4j.ConsoleAppender(控制台)
  2. org.apache.log4j.FileAppender(文件)
  3. org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
  4. org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
  5. org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
4.2.1 ConsoleAppender选项

Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Target=System.err:默认值是System.out。

4.2.2 FileAppender选项

Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。

4.2.3 DailyRollingFileAppender选项

Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定当前消息输出到logging.log4j文件中。
DatePattern='.'yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。

另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:

  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.2.4 RollingFileAppender选项

Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。
MaxFileSize=100KB:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。

4.3 layout配置日志的输出格式

log4j.appender.appenderName.layout = Log4j提供的layout类
log4j.appender.appenderName.layout.属性 = 值
log4j.appender.appenderName.layout.属性 =
log4j提供的layout
  • org.apache.log4j.HTMLLayout:以HTML表格形式布局
  • org.apache.log4j.PatternLayout:可以灵活地指定布局模式
  • org.apache.log4j.SimpleLayout:包含日志信息的级别和信息字符串
  • org.apache.log4j.TTCCLayout:包含日志产生的时间、线程、类别等等信息
4.3.1 HTMLLayout选项

LocationInfo=true:输出java文件名称和行号,默认值是false。
Title=My Logging: 默认值是Log4J Log Messages。

4.3.1 PatternLayout选项

ConversionPattern=%m%n:设定以怎样的格式显示消息。

4.3.2 格式化符号说明
  • `%p``:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
  • %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
  • %r:输出自应用程序启动到输出该log信息耗费的毫秒数。
  • %t:输出产生该日志事件的线程名。
  • %l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。
  • %c:输出日志信息所属的类目,通常就是所在类的全名。
  • %M:输出产生日志信息的方法名。
  • %F:输出日志消息产生时所在的文件名称。
  • %L:输出代码中的行号。
  • %m:输出代码中指定的具体日志信息。
  • %n:输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"。
  • %x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
  • %%:输出一个"%"字符。

可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式,如:

  • c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
  • %-20c:"-"号表示左对齐。
  • %.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。
  • %20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值