log4j配置祥解
来源:互联网 发布:sql数据库获取当前时间 编辑:程序博客网 时间:2024/05/31 15:19
Log4j配置有3个重要的概念:日志记录器(Logger)、输出地(Appender)以及日志格式化器(Layout)。其中,Logger负责记录日志,Appender负责输出到什么地方,Layout负责以什么样的格式输出、输出哪些附加信息(例如时间、类名、方法名、所在行数等等)
一、日志记录器Logger
### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=warn, stdout
1、在log.properties配置中,log4j.logger后面配置的是Logger,log4j.appender后面配置的是appender输出地。如上面的配置为该Logger为warn级别,输出地为stdout
FATAL 0 - 严重错误
ERROR 3 - 错误
WARN 4 - 警告
INFO 6 -一般信息
DEBUG 7 -调试信息
这边配置的是大于等于配置的级别。例如配置的是WARN,则会显示3个级别的信息,WARN、ERROR、FATAL
3、各个子记录器配置Logger——任何子记录器都可以继承rootLogger的配置
#log4j.logger.org.hibernate=info#log4j.logger.org.hibernate=debuglog4j.logger.cn.com.lis=debug
1)原因分析:根配置如果配成WARN,则你代码中info和debug的信息都不会显示;而配成debug的话,在初始化的时候,spring和hibernate内部的输出会很多,造成一定的麻烦。
2)解决:根配置为WARN,并且多配置log4j.logger.cn.com.lis=debug,cn.com.lis是包名i(这边随意可以细化道具提的类),代表这个包下面的输出级别为debug。
3)这边子记录器可以只配置级别或者输出地,也可以两者都配置。
4)Logger还有一个类别(Category)的概念,类似于java中的package,效果跟Logger的名字等价;例如
# 作用于类别cn.itcast.oa下所有的Loggerlog4j.category.cn.itcast.oa=debug
二、输出地Appender
Appender表示日志输出到什么地方,常用的输出地有控制台、文件、数据库、远程服务器等。所有的Appender都实现自org.apache.log4j.Appender 接口。在log4j.properties 中,Appender都使用log4j.appender.*配置。
1、输出到控制台(ConsoleAppender)
log4j.rootLogger=warn, Console # 根记录器,WARN,输出到 Consolelog4j.logger.cn.lis = debug# 本子记录器为 DEBUG 级别,针对 cn.lis 包log4j.appender.Console=org.apache.log4j.ConsoleAppender# 设置 Console 地点为控制台输出 ConsoleAppenderlog4j.appender.Console.Threshold = debug# DEBUG 以上级别是输出log4j.appender.Console.Encoding = UTF-8# 编码方式log4j.appender.Console.ImmediateFlush = true# 是否立即输出log4j.appender.Console.Target = System.err# 使用 System.err 输出log4j.appender.Console.layout=org.apache.log4j.PatternLayout # 输出格式,表达式配置log4j.appender.Console.layout.ConversionPattern=[SAM-Shop] [%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%-5p][%c] %m\n
1)控制台输出需要配置layout属性,最常用的是正则表达式格式。控制台输出的信息一般为TRANCE、DEBUG、或者INFO级别的,只在开发调试时才启用。
2)可选属性:
Encoding:设置编码方式; ImmediateFlush:设置是否缓存;Target:设置输出到Sysout.out还是Sysout.err; Threshold:用来设置该Appender的级别,只对本 Appender生效。
2、输出到文件(FileAppender)
文件输出把日志输出到指定文件。配置时需要用File指定文件名称。可以用时相对路径,也可以使用绝对路径。例如:
log4j.rootLogger=warn, f # 根记录器,WARN,输出到 flog4j.logger.cn.lis = debug, f# 本子记录器为 DEBUG 级别,针对 cn.lis 包log4j.appender.f = org.apache.log4j.FileAppender# 设置 f 地点为输出到文件 FileAppenderlog4j.appender.f.File = C:\\log.text# 文件位置,相对路径和绝对路径都可以log4j.appender.f.Append = true# 追加文件内容log4j.appender.f.layout=org.apache.log4j.PatternLayout # 输出格式,表达式配置log4j.appender.Console.f.ConversionPattern=[SAM-Shop] [%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%-5p][%c] %m\n
可选参数Append配置是否在原文件内容上追加日志。如果为false, Logger初始化时会先清掉文件内容,也就是说每次重启程序,原来的日志会丢失。如果为true, 日志文件会越来越大。默认为true 。
3、输出到按大小滚动文件(RoollingFileAooender),是FileAppender的子类。
把日志输出指定文件,文件达到指定的大小时,会自动更名。需要配置文件名称,文件的最大尺寸,例如:
log4j.rootLogger=warn, f ,rolling_file # 根记录器,WARN,输出到 f 和 rolling_file两个地点# 配置地点f 的信息log4j.appender.f = org.apache.log4j.FileAppender# 设置 f 地点为输出到文件 FileAppenderlog4j.appender.f.File = C:\\log.text# 文件位置,相对路径和绝对路径都可以log4j.appender.f.Append = true# 追加文件内容log4j.appender.f.layout=org.apache.log4j.PatternLayout # 输出格式,表达式配置log4j.appender.Console.f.ConversionPattern=[SAM-Shop] [%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%-5p][%c] %m\n# 配置地点rolling_file 的信息log4j.appender.rolling_file=org.apache.log4j.RollingFileAppender# 设置 rolling_file 地点为输出到滚动文件 RollingFileAppenderlog4j.appender.rolling_file.Threshold=ERROR# ERROR以上才使用log4j.appender.rolling_file.File=C:\\rolling.log# 滚动文件名log4j.appender.rolling_file.Append=true# 追加方式log4j.appender.rolling_file.MaxFileSize=10KB# 文件到达10KB就自动更名log4j.appender.rolling_file.MaxBackupIndex=100# 最多备份100个文件log4j.appender.rolling_file.layout=org.apache.log4j.PatternLayout# 输出格式,表达式配置log4j.appender.rolling_file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%C]-[%p] %m%n
1)Logger 支持多个Appender, 用逗号分开即可。如上面就配置了2个输出地点。
2)配置滚动文件名为rolling.log, 文件大小为10KB。 当rolling.log达到10KB时,会自动更名为rolling.log.1、 rolling.log.2、 rolling.log.3 直到rolling.log.100 。
3、输出到按日期滚动文件(DailyRollingFileAppender)
按日期滚动文件输出将日志输出到指定文件,当容器发生变化时,会将文件按指定的日期格式自动更名。例如:
log4j.rootLogger=warn, dailly_rolling # 根记录器,WARN,输出到 dailly_rolling # 输出到按日期滚动文件log4j.appender.dailly_rolling=org.apache.log4j.DailyRollingFileAppender# 设置 dailly_rolling 地点为输出到日期滚动文件 DailyRollingFileAppenderlog4j.appender.dailly_rolling.File=C:\\daily_rolling.log# 滚动文件名及位置log4j.appender.dailly_rolling.DatePattern=.yyyy-MM-dd # 滚动日期格式log4j.appender.dailly_rolling.layout=org.apache.log4j.PatternLayout# 输出格式,表达式配置log4j.appender.dailly_rolling.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%C]-[%p] %m%n
1)日志文件名称为daily_rolling.log, 日期格式为yyyy-MM-dd。进入新的一天后, 文件会被自动更名,格式为daily_rolling.log.2014-09-06。
2)、输出到JDBC数据库(JDBCAender)、输出到Socket套接字、输出到SMTP邮件、自定义输出等略。
三、日志格式化器 Layout
1、简介:日志格式化器layut负责格式化日志信息。常用的格式化布局有PatternLayout布局(最常用)、HTMLLayout布局、XMLLayout布局。
2、PatternLayout布局(最常用)
PatternLayout布局是最常用的格式化器,用户可以自定义输出信息,例如日期、时间、所在的线程、类名、文件名、方法名、信息级别、文件行数等,例如:
log4j.rootLogger=warn, Consolelog4j.logger.cn.lis = debuglog4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Threshold = debuglog4j.appender.Console.Encoding = UTF-8log4j.appender.Console.ImmediateFlush = truelog4j.appender.Console.Target = System.errlog4j.appender.Console.layout=org.apache.log4j.PatternLayout<span style="white-space:pre"></span>#最常用布局log4j.appender.Console.layout.ConversionPattern=[SAM-Shop] [%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%-5p][%c] %m%n
1)符号%d、 %C、%c、%p、%m、%n等后面的便是参数。
2)Log4j 中常用的参数见下面的表。
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j 配置祥解
- log4j配置祥解
- log4j 配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- log4j配置祥解
- WIN32和_WIN32的区别
- java多线程
- 【软考】向上转型 VS 简单工厂
- 以php开发服务器后台的android即时通讯app的一种实现思路
- 【LeetCode】Permutations II
- log4j配置祥解
- iOS_31_cocos2d_CCScene
- zoj 1002 Fire Net (简单dfs)
- 二叉树的三叉链表存储(java实现)
- 借助JavaCV实现android手机查看PC摄像头实时视频
- c++11特性与cocos2d-x 3.0之std::bind与std::function
- 【Leetcode】Linked List Cycle
- 软工视频——1-3章总结
- Command line option syntax error.type Command /? for help