log4j的配置以及代码实现
1.学习的地方:
https://blog.csdn.net/u013870094/article/details/79518028
https://www.cnblogs.com/aipan/p/10154391.html
需要先导入包log4j-1.2.17.jar
2.Log4j支持两种配置文件格式
1.是XML格式的文件
2.是Java特性文件(键=值),下面介绍的是这种
3.配置根Logger
---------------------------------1.rootLogger---------------------------------
log4j.rootLogger = [ level ] , appenderName, appenderName, …
level 是日志记录的优先级,分为OFF、FATAL(0严重错误)、ERROR(3错误)、WARN(4警告)、INFO(6普通)、DEBUG(7调试)、ALL或者您定义的级别
Log4j 建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG
--->比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
appenderName就是指日志信息输出到哪个地方。您可以同时指定多个输出目的地。
例子:
1.log4j.rootLogger = debug,stdout,D,E
debug 日志级别
stdout 是打印到控制台
D,E 日志输出位置
注:这里控制台算数出一个地方,D盘和E盘也算一个地方,可继续添加输出地
2.log4j.rootLogger = debug,console,logfile,stdout,D
console 配置在Console中输出
logfile 配置在logfile中输出
输出到控制台和本地硬盘文件
---------------------------------2.Appender---------------------------------
1.配置日志信息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
Appender 为日志输出目的地,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
比如:
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.logfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File = d://log4j2.log
log4j.appender.logfile.Encoding = UTF-8
2.配置日志信息的格式(布局)
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
Layout:日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
比如:
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
注:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
---------------------------------3.hibernate---------------------------------
#当解析查询语句时记录HQL和SQL
log4j.logger.org.hibernate.hql.ast.AST=DEBUG
#记录与事务有关的活动
#log4j.logger.org.hibernate.transaction=DEBUG
#记录执行的HQL语句
#log4j.logger.org.hibernate.hql=DEBUG
#与数据库连接的
log4j.logger.org.hibernate.ps.PreparedStatementCache = error
#记录所有的信息
#log4j.logger.org.hibernate=INFO
#记录执行的SQL语句
#log4j.logger.org.hibernate.SQL=DEBUG
#记录JDBC参数
#log4j.logger.org.hibernate.type=DEBUG
#记录执行的SQL DDL语句
#log4j.logger.org.hibernate.tool.hbm2ddl=DEBUG
#记录在清理Session缓存时,Session缓存中所有对象的状态(最多记录20个对象)
#log4j.logger.org.hibernate.pretty=DEBUG
#记录第二级缓存的活动
#log4j.logger.org.hibernate.cache=DEBUG
#记录得到的JDBC资源
#log4j.logger.org.hibernate.jdbc=DEBUG
#记录JASS(Java Authentication and Authorization Service)授权请求
#是一种提供安全验证和授权服务的框架
#log4j.logger.org.hibernate.secure=DEBUG
4.代码(src同级创建并设置log4j.properties)
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
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] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}-%p %l] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.Encoding = UTF-8
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}-%p %l] %m%n
log4j.logger.org.hibernate.hql.ast.AST=DEBUG
...
5.测试
import org.apache.log4j.Logger;
public class Test {
private static Logger logger = Logger.getLogger(Test.class);
public static void main(String[] args) {
// 记录debug级别的信息
logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");
}
}
如果学武不是为了当武林盟主,那将毫无意义