本文记录了学习廖雪峰Java教程的心得,原章节地址:https://www.liaoxuefeng.com/wiki/1252599548343744/1264739436350112#0
Log4j是一种非常流行的日志框架, 可以把日志按照配置输出到不同的位置,例如:console:输出到屏幕;file:输出到文件;socket:通过网络输出到远程计算机;jdbc:输出到数据库。
一、配置Log4j的组件
使用Log4j时,要注意Log4j是Java第三方库,需要将jar包放到要编译的.Java同一文件夹下。需要的组件有:
- 配置文件
- commons-logging的jar包:commons-logging-1.2.jar
- Log4j的jar包:log4j-api-2.14.0.jar;log4j-core-2.14.0.jar;log4j-jcl-2.14.0.jar(笔者下载的版本是2.14.0版本)
1.1配置文件
配置文件例子如下:新建笔记本粘贴以下内容,然后保存文件名为log4j2.xml即可。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<!-- 定义日志格式 -->
<Property name="log.pattern">%d{MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36}%n%msg%n%n</Property>
<!-- 定义文件名变量 -->
<Property name="file.err.filename">log/err.log</Property>
<Property name="file.err.pattern">log/err.%i.log.gz</Property>
</Properties>
<!-- 定义Appender,即目的地 -->
<Appenders>
<!-- 定义输出到屏幕 -->
<Console name="console" target="SYSTEM_OUT">
<!-- 日志格式引用上面定义的log.pattern -->
<PatternLayout pattern="${log.pattern}" />
</Console>
<!-- 定义输出到文件,文件名引用上面定义的file.err.filename -->
<RollingFile name="err" bufferedIO="true" fileName="${file.err.filename}" filePattern="${file.err.pattern}">
<PatternLayout pattern="${log.pattern}" />
<Policies>
<!-- 根据文件大小自动切割日志 -->
<SizeBasedTriggeringPolicy size="1 MB" />
</Policies>
<!-- 保留最近10份 -->
<DefaultRolloverStrategy max="10" />
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<!-- 对info级别的日志,输出到console -->
<AppenderRef ref="console" level="info" />
<!-- 对error级别的日志,输出到err,即上面定义的RollingFile -->
<AppenderRef ref="err" level="error" />
</Root>
</Loggers>
</Configuration>
1.2 commons-logging的jar包
Log4j这个第三方库需要和commons-logging配合,使用commons-logging的接口打印日志。因此,需要调用commons-logging的jar包。
下载commons-logging的jar包。下载后,解压,找到commons-logging-1.2.jar这个文件,再把文件和Java源码.java文件放到一个目录下。
1.3 Log4j的jar包
下载Log4j的jar包。笔者下载的2.14.0版本文件名称是 apache-log4j-2.14.0-bin.zip,下载解压后,把以下3个jar包放到.Java的同一文件夹中。
- og4j-api-2.x.jar
- log4j-core-2.x.jar
- log4j-jcl-2.x.jar
二、配置 Log4j 操作
第一步:编译 .java文件,得到.class文件。
注意:
- jar包的版本号按照下载的文件名来。
- -cp 表示classpath,点表示在.java文件当前目录。-cp .;commons-logging-1.2.jar;log4j-api-2.13.3.jar;log4j-core-2.13.3.jar;log4j-jcl-2.13.3.jar表示在当前目录有程序编译需要的资源包,需要参与编译过程。
javac -cp .;commons-logging-1.2.jar;log4j-api-2.13.3.jar;log4j-core-2.13.3.jar;log4j-jcl-2.13.3.jar Common_logging_learning.java
第二步:执行.class文件,输出日志。
java -cp .;commons-logging-1.2.jar;log4j-api-2.13.3.jar;log4j-core-2.13.3.jar;log4j-jcl-2.13.3.jar Common_logging_learning
输出到控制台上的内容如下:
01-28 09:58:04.207 [main] INFO Common_logging_learning
start...
01-28 09:58:04.209 [main] WARN Common_logging_learning
end.