您现在的位置是:网站首页 > 代码编程 > 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使用之ConsoleAppender教程

最后再看一个属性: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输出日志。

运行截图:

log4j使用之ConsoleAppender教程

上图中,我们可以看到,红色和白色的日志都打印出来了,说明我自己包的日志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

日志截图:

log4j使用之ConsoleAppender教程

可以看到,此时就只有红色日志了,说明没有继承rootLogger,此参数用的并不多(我工作中碰见的很少),但是属于那种在关键时候能有奇效的参数,所以大家需要留意一下它。

log4j日志框架

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们