您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发
【原】log4j使用之ConsoleAppender教程
不忘初心 2019-05-10 围观() 评论() 点赞() 【JAVA开发】
简介:了解了log4j的一些基本概念和参数之后,我们首先来使用一下它的ConsoleAppender,这是它最基础的一个appender,用于在console控制台输出日志。
了解了log4j的一些基本概念和参数之后,我们首先来使用一下它的ConsoleAppender,来看看效果如何,项目就不再重新搭建了,直接使用上次写ssm教程时搭建的springmvc + spring + mybatis项目,由于是log4j而不是log4j2,所以暂时还是以properties文件的形式来讲解。
话不多说,直接上配置文件:log4j.properties
# 配置根logger,如果下面没有自定义logger,那么项目中的日志就都是debug级别(level的大小写没关系),输出到console
log4j.rootLogger=DEBUG,console
# 屏蔽框架日志,只有报错的时候才放出来,优先级高于rootLogger
log4j.logger.org.springframework=ERROR
log4j.logger.org.apache.ibatis=ERROR
log4j.logger.org.mybatis.spring=ERROR
log4j.logger.com.mchange=ERROR
# 自定义包路径中的日志等级,直接写一个level即可,appender可选择,如果没写就默认使用rootLogger中配置的console
log4j.logger.com.ssm=DEBUG
# 打印出jdbc的日志
log4j.appender.java.sql.ResultSet=DEBUG
log4j.appender.java.sql.Connection=DEBUG
log4j.appender.java.sql.Statement=DEBUG
log4j.appender.java.sql.PreparedStatement=DEBUG
# 控制台(console)
log4j.appender.console=org.apache.log4j.ConsoleAppender
#指定输出级别为debug,拥有最高优先级
log4j.appender.console.Threshold=DEBUG
#日志立即输出,不用缓冲,默认为true
log4j.appender.console.ImmediateFlush=true
#打印的语句,如果是system.err就会看到控制台一片红
log4j.appender.console.Target=System.out
#选择输出方式
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#配置日志输出格式
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c - %m%n
注释写的很全,就不再啰嗦,需要提一点就是pattern的配置,大家注意中间的[%5p],本来%p是日志级别,但是单词长短不一,就以最大的debug长度为基准,统一长度为5,长度不够的就是用空格占位。
直接来看一下效果图:
最后再看一个属性:log4j.additivity,有时候只想让日志在自己的appender中输出,而不想在rootLogger中定义的appender中输出,那么就可以使用此参数来解决,由于默认为true,所以会继承父logger的appender。
可能大家还不明白什么意思,我来写一个简单的示例:分别定义不同的appender,使用system.int和system.out来区分颜色
# 配置根logger,如果下面没有自定义logger,那么项目中的日志就都是debug级别,输出到console
log4j.rootLogger=DEBUG,console
# 屏蔽框架日志,只有报错的时候才放出来,优先级高于rootLogger
log4j.logger.org.springframework=ERROR
log4j.logger.org.apache.ibatis=ERROR
log4j.logger.org.mybatis.spring=ERROR
log4j.logger.com.mchange=ERROR
# 自定义包路径中的日志等级,直接写一个level即可,appender可选择,如果没写就默认使用rootLogger中配置的console
log4j.logger.com.ssm=DEBUG,console1
# 打印出jdbc的日志
log4j.appender.java.sql.ResultSet=DEBUG
log4j.appender.java.sql.Connection=DEBUG
log4j.appender.java.sql.Statement=DEBUG
log4j.appender.java.sql.PreparedStatement=DEBUG
# 控制台(console)
log4j.appender.console=org.apache.log4j.ConsoleAppender
#指定输出级别为debug,优先级最高
log4j.appender.console.Threshold=DEBUG
#日志立即输出,不用缓冲,默认为true
log4j.appender.console.ImmediateFlush=true
#打印的语句,如果是system.err就会看到控制台一片红
log4j.appender.console.Target=System.out
#选择输出方式
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#配置日志输出格式
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c - %m%n
log4j.appender.console1=org.apache.log4j.ConsoleAppender
log4j.appender.console1.Threshold=DEBUG
log4j.appender.console1.ImmediateFlush=true
log4j.appender.console1.Target=System.err
log4j.appender.console1.layout=org.apache.log4j.PatternLayout
log4j.appender.console1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c - %m%n
我分别创建了两个ConsoleAppender,rootLogger的appender叫console,使用system.out输出日志,自己包的appender叫console1,使用system.err输出日志。
运行截图:
上图中,我们可以看到,红色和白色的日志都打印出来了,说明我自己包的日志appender也继承了rootLogger的appender,因为它打印了白色字体的日志。
改一下配置,加上log4j.additivity:
# 配置根logger,如果下面没有自定义logger,那么项目中的日志就都是debug级别,输出到console
log4j.rootLogger=DEBUG,console
# 屏蔽框架日志,只有报错的时候才放出来,优先级高于rootLogger
log4j.logger.org.springframework=ERROR
log4j.logger.org.apache.ibatis=ERROR
log4j.logger.org.mybatis.spring=ERROR
log4j.logger.com.mchange=ERROR
# 自定义包路径中的日志等级,直接写一个level即可,appender可选择,如果没写就默认使用rootLogger中配置的console
log4j.logger.com.ssm=DEBUG,console1
#不继承父级logger(rootLogger)中的appender,默认是true
log4j.additivity.com.ssm=false
# 打印出jdbc的日志
log4j.appender.java.sql.ResultSet=DEBUG
log4j.appender.java.sql.Connection=DEBUG
log4j.appender.java.sql.Statement=DEBUG
log4j.appender.java.sql.PreparedStatement=DEBUG
# 控制台(console)
log4j.appender.console=org.apache.log4j.ConsoleAppender
#指定输出级别为debug,优先级最高
log4j.appender.console.Threshold=DEBUG
#日志立即输出,不用缓冲,默认为true
log4j.appender.console.ImmediateFlush=true
#打印的语句,如果是system.err就会看到控制台一片红
log4j.appender.console.Target=System.out
#选择输出方式
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#配置日志输出格式
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c - %m%n
log4j.appender.console1=org.apache.log4j.ConsoleAppender
log4j.appender.console1.Threshold=DEBUG
log4j.appender.console1.ImmediateFlush=true
log4j.appender.console1.Target=System.err
log4j.appender.console1.layout=org.apache.log4j.PatternLayout
log4j.appender.console1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c - %m%n
日志截图:
可以看到,此时就只有红色日志了,说明没有继承rootLogger,此参数用的并不多(我工作中碰见的很少),但是属于那种在关键时候能有奇效的参数,所以大家需要留意一下它。
看完文章,有任何疑问,请加入群聊一起交流!!!
很赞哦! ()
上一篇:log4j配置文件详解
相关文章
标签云
猜你喜欢
- IntelliJ IDEA 2019.2已经可以利用补丁永久破解激活了
- IntelliJ IDEA 2019.3利用补丁永久破解激活教程
- IntelliJ IDEA高版本最灵活的永久破解激活方法(含插件激活,时长你说了算)
- Jetbrains全家桶基于ja-netfilter的最新破解激活详细图文教程
- IntelliJ IDEA 2022.1永久破解激活教程(亲测可用,持续更新)
- 分享几个正版 IntelliJ IDEA 激活码(破解码、注册码),亲测可用,持续更新
- ja-netfilter到底需不需要mymap,2021.3.2版本激活失效?
- 如何激活idea2022.1及以上版本中的插件(亲测可用)
- 【史上最全】IntelliJ IDEA最新2022.1版本安装和激活视频教学(含插件)
- IntelliJ IDEA 2022.2 版本最新2099年永久激活方法,亲测可用,也可以开启新UI了。
站点信息
- 网站程序:spring + freemarker
- 主题模板:《今夕何夕》
- 文章统计:篇文章
- 标签管理:标签云
- 微信公众号:扫描二维码,关注我们