log4j日志的使用步骤和基本技术知识

时间:2020-12-20 21:49:36

*****************************log4j日志的使用步骤

第一步:添加jar包支持
首先建立一个WEB工程,去log4j官网下log4j的JAR包导入到工程的lib目录下

第二步:添加并载入配置文件
在src目录下建一个log4j.properties 文件
log4j启动时,默认会寻找source folder(存放java源代码的文件夹,当然也包括一些package文件夹,还可以包括其他文件,即使src)下的log4j.xml配置文件,若没有,会寻找log4j.properties文件。然后加载配置。配置文件放置位置正确,就不需要在程序中手动加载log4j配置文件。
PropertyConfigurator.configure("log4j.properties") 默认读取的是项目根目录的路径。此时的log4j.properties要放在项目目录下。
一个java项目会有很多的配置文件,建议把所有的配置文件放到一个文件夹下,例如,放到config文件夹。那么在读取这些配置文件的时候要加上子目录名称。PropertyConfigurator.configure("config/log4j.properties");

该配置文件内容可以为:
### 设置logger级别 ###
log4j.rootLogger=INFO,stdout,A1

### appender.stdout输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= [%5p] [BYSXXGLXT] %d{yyyy-MM-dd HH:mm:ss}: %-4r [%-5p] [%t] ( %F,%L ) - %m%n

### appender.A1输出到日志文件 ###
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=${catalina.base}/logs/test.log  ###日志文件在tomcat的logs文件夹中###
##注意上面日志文件相对应用根目录路径的写法
log4j.appender.A1.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.A1.Append=true
## 输出DEBUG级别以上的日志
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern= [%5p] [BYSXXGLXT] %d{yyyy-MM-dd HH:mm:ss}: %-4r     [%t] ( %F,%L ) - %m%n

第三步:获得日志记录器
//取得日志记录器Logger,名字为本类的名字。
Logger logger = Logger.getLogger(this.getClass());

第四步:利用日志记录器生成日志信息,当以上三个必要步骤执行完毕后,便可以轻松地使用不同优先级的日志记录语句插入想要记录日志的任何地方了。
logger.fatal("这是一条从TestServlet产生的fatal信息!");
logger.error("这是一条从TestServlet产生的error信息!");
logger.warn("这是一条从TestServlet产生的warn信息!");
logger.debug("这是一条从TestServlet产生的debug信息!");
logger.info("这是一条从TestServlet产生的info信息!");



**************以下是log4j的基本知识

Log4j是Jakarta下的一个开源代码的子项目,通过Log4j,可以使用定制的格式把调试信息和日志信息输出到一个或多个需要的地方。

Log4j的组成
Log4j包括3个很重要的组件:公共类Logger、公共接口Appender和公共抽象类Layout。
1、公共类Logger
日志记录器(Logger)是日志处理的核心组件,负责日志信息的生成。根据配置的日志级别对生成的日志进行输出或截屏。

级别 描述
OFF 关闭所有日志记录的输出
FATAL 输出将会导致应用程序退出的严重错误事件信息
ERROR 输出不影响系统继续运行的错误事件信息
WARN 输出会出现的潜在错误事件信息
INFO 输出应用系统的运行过程信息
DEBUG 输出应用程序的调试信息
ALL 打开所有日志记录的输出

2、公共接口Appender
Appender负责控制日志记录操作的输出,用以指定日志信息的输出目的地(如控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等)。

Appender名称 描述
ConsoleAppender 输出到控制台
FileAppender 输出到指定文件
RollingFileAppender 输出到文件,当文件大小到达指定尺寸的时候产生一个新文件
DailyRollingFileAppender 输出到文件,每天产生一个新文件
WriterAppender 将日志信息以流格式发送到任意指定的地方
JDBCAppender 输出到指定的数据库
SMTPAppender 以邮件形式发送日志信息

3、公共抽象类Layout
Layout负责格式化Appender输出
Log4j提供的layout格式有:

Layout名称 描述
SimpleLayout 包含日志信息的级别和信息字符串
PatternLayout 根据指定的转换模式格式化日志输出
HTMLLayout 以HTML表格形式输出
TTCCLayout 包含日志产生的时间、线程、类别等信息

Log4j提供的输出函数
参数名称 描述
%m 输出代码中指定的消息内容
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类别,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符
%d 输出日志时间点的日期或时间
%l 输出日志事件的发生位置,包括类名称,发生的线程,以及在代码中的行数


Log4j的配置文件
Log4j支持两种配置文件格式,一种是XML格式的文件,另一种是Java属性文件(键=值)

log4j.properties的示例
log4j.rootLogger=DEBUG,A1,A2,A3,A4,A5,A6

# 应用于控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n

# 应用于文件
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=${catalina.home}/webapps/testLog/logging.log
log4j.appender.A2.Append=true
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n


# 应用于文件回滚
log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.File=${catalina.home}/webapps/testLog/logging.log
log4j.appender.A3.Append=true
log4j.appender.A3.MaxFileSize=1000KB
log4j.appender.A3.MaxBackupIndex=1
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n


# 发送日志给邮件
log4j.appender.A4=org.apache.log4j.net.SMTPAppender
log4j.appender.A4.BufferSize=10
log4j.appender.A4.From=发件箱地址
log4j.appender.A4.SMTPHost=SMTP服务器
log4j.appender.A4.Subject=邮件标题
log4j.appender.A4.To=收件箱地址
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n



# 用于数据库
log4j.appender.A5=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.A5.URL=jdbc:mysql://localhost:3306/test
log4j.appender.A5.driver=com.mysql.jdbc.Driver
log4j.appender.A5.user=root
log4j.appender.A5.password=root
log4j.appender.A5.sql=INSERT INTO LOG4J (Message) VALUES ('%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n')
log4j.appender.A5.layout=org.apache.log4j.PatternLayout
log4j.appender.A5.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n

# 应用每日生成一个日志文件
log4j.appender.A6=org.apache.log4j.DaliyRollingFileAppender
log4j.appender.A6.File=${catalina.home}/webapps/testLog/logging.log
log4j.appender.A6.DatePattern=yyyyMMdd-HH'.log'
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [INFO] %m%n