热门系列:


Log4j配置及说明

1.配置内容模板

#定义LOG输出级别
log4j.rootLogger=DEBUG,Console,D,I,E
#定义日志输出目的地为控制台
log4j.appender.Console.Threshold=DEBUG
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n### 输出到日志文件(DEBUG级别) ###
log4j.appender.D = com.cams.util.Log4jAppender
###设置DatePattern,当天日志保存到log.log文件,前一天的日志文件名将被修改为
#debug.log + _yyyy-MM-dd.log
log4j.appender.D.File =logs/cams/debug.log
log4j.appender.D.DatePattern = '_'yyyy-MM-dd'.log'
log4j.appender.D.Append = true
## 输出DEBUG级别以上的日志
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n### 输出到日志文件(INFO级别) ###
log4j.appender.I = com.cams.util.Log4jAppender
###设置DatePattern,当天日志保存到log.log文件,前一天的日志文件名将被修改为
#info.log + _yyyy-MM-dd.log
log4j.appender.I.File =logs/cams/info.log
log4j.appender.I.DatePattern = '_'yyyy-MM-dd'.log'
log4j.appender.I.Append = true
## 输出DEBUG级别以上的日志
log4j.appender.I.Threshold = INFO
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n### 保存异常信息到单独文件(ERROR级别) ###
log4j.appender.E = com.cams.util.Log4jAppender
###设置DatePattern,当天日志保存到error.log文件,前一天的日志文件名将被修改为
#error.log + _yyyy-MM-dd.log
log4j.appender.E.File =logs/cams/error.log
log4j.appender.E.DatePattern = '_'yyyy-MM-dd'.log'
log4j.appender.E.Append = true
## 只输出ERROR级别以上的日志!!!
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%nlog4j.logger.org.springframework.jdbc=DEBUG
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
##log4j.logger.com.cams.dao=debug,A1###显示mybatis的SQL语句部分,类似于hibernate在控制台打印sql语句那部分
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

注意点:当我们需要将日志按Error,Warn,Info,Debug等级别来单独生成日志文件时,仅配置log4j.propertites还不行。必须重写DailyRollingFileAppender类的isAsSevereAsThreshold方法。此方法中源代码是返回当前级别及以上。所以此处重写应范围与相应级别匹配;即如下

package com.cams.util;import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority;public class Log4jAppender extends DailyRollingFileAppender{@Overridepublic boolean isAsSevereAsThreshold(Priority priority) {// TODO Auto-generated method stub//只判断是否相等,而不判断优先级return this.getThreshold().equals(priority);}}

2.具体配置项说明:

1.输出级别的种类
  • ERROR、WARN、INFO、DEBUG
  • ERROR 为严重错误 主要是程序的错误
  • WARN 为一般警告,比如session丢失
  • INFO 为一般要显示的信息,比如登录登出
  • DEBUG 为程序的调试信息
2.配置日志信息输出目的地
  • log4j.appender.appenderName = fully.qualified.name.of.appender.class
  • 1.org.apache.log4j.ConsoleAppender(控制台)
  • 2.org.apache.log4j.FileAppender(文件)
  • 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
  • 4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
  • 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3.配置日志信息的格式
  • log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
  • 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  • 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  • 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  • 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
4.控制台选项
  • Threshold=DEBUG:指定日志消息的输出最低层次。
  • ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
  • Target=System.err:默认情况下是:System.out,指定输出控制台
FileAppender 选项
  • Threshold=DEBUF:指定日志消息的输出最低层次。
  • ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
  • File=mylog.txt:指定消息输出到mylog.txt文件。
  • Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

RollingFileAppender 选项

  • Threshold=DEBUG:指定日志消息的输出最低层次。
  • ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
  • File=mylog.txt:指定消息输出到mylog.txt文件。
  • Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
  • MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
  • MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
例:log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
5.日志信息格式中几个符号所代表的含义:
  • -X号: X信息输出时左对齐;
  • %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
  • %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
  • %r: 输出自应用启动到输出该log信息耗费的毫秒数
  • %c: 输出日志信息所属的类目,通常就是所在类的全名
  • %t: 输出产生该日志事件的线程名
  • %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
  • %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
  • %%: 输出一个"%"字符
  • %F: 输出日志消息产生时所在的文件名称
  • %L: 输出代码中的行号
  • %m: 输出代码中指定的消息,产生的日志具体信息
  • %n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。
如:
1)   %20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)   %-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)   %.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)   %20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。

本博客皆为学习、分享、探讨为本,欢迎各位朋友评论、点赞、收藏、关注,一起加油!

【Java编程系列】log4j配置日志按级别分别生成日志文件相关推荐

  1. 【Java编程系列】java用POI、Itext生成并下载PPT、PDF文件

    热门系列: [Java编程系列]WebService的使用 [Java编程系列]在Spring MVC中使用工具类调用Service层时,Service类为null如何解决 [Java编程系列]Spr ...

  2. 【Java编程系列】Java自定义标签-Tag

    热门系列: [Java编程系列]WebService的使用 [Java编程系列]在Spring MVC中使用工具类调用Service层时,Service类为null如何解决 [Java编程系列]Spr ...

  3. 【Java编程系列】使用Java进行串口SerialPort通讯

    热门系列: [Java编程系列]WebService的使用 [Java编程系列]在Spring MVC中使用工具类调用Service层时,Service类为null如何解决 [Java编程系列]Spr ...

  4. 【Java编程系列】Minio实现文件上传下载

    热门系列: [Java编程系列]Amazon S3实现文件上传下载 目录 热门系列: 1.前言 2.Minio实战代码 2.1 Minio环境部署 2.2 Minio的Sdk对接实现 2.2.1 Mi ...

  5. 【Java编程系列】gateway限流实践时发生的问题和解决方案

    前期回顾: [Java编程系列]Springcloud-gateway自带限流方案实践篇 1.实践中发生的问题 主要有以下几个问题: 1.限流返回的响应数据无法自定义 (LogFormatUtils. ...

  6. 查看java编程环境是否配置成功

    验证Java编程环境是否配置成功 点击键盘Windows+r键,打开运行提示框输入cmd按回车键打开命令框 输入javac,点击回车,查看java编译环境是否正常. 输入"java" ...

  7. 【Java编程系列】Java判断世界各时区的夏令时、冬令时

    热门系列: [Java编程系列]java用POI.Itext生成并下载PPT.PDF文件 [Java编程系列]二进制如何表示小数?0.3+0.6为什么不等于0.9?纳尼!!! 程序人生,精彩抢先看 目 ...

  8. Re0:Java编程系列-3 进阶排序思维分析与对比

    Re0:Java编程系列 作者参加校招,在复习Java的同时,决定开一打系列博客.复习的同时,作者希望能留下材料,方便也服务一些新入门的小伙伴. 本系列文章从基础入手,由简单的功能函数开始,再扩展为类 ...

  9. slf4j没有在linux中生成日志,slf4j日志记录问题 - 未生成日志文件

    我正在使用slf4j通过java实用程序日志记录.我试图放置logging.properties文件,以便它会被我的web应用程序拾取.以下是我的logging.properties文件怎么样子:sl ...

最新文章

  1. 智能零售来了!Amazon Go无人商店周一正式对公众开放
  2. 漫画:什么是 “建造者模式” ?
  3. Java中switch对整型/字符型/字符串型具体实现细节
  4. 你想建设一个能承受500万PV/每天的网站吗?如果计算呢?
  5. docker 不挂断创建容器
  6. 数据分析如何从1进阶到10?
  7. javascript 西瓜一期 11 二进制的数数进位解析
  8. 95-190-450-源码-window-Trigger-ContinuousProcessingTimeTrigger
  9. 如何判断对方列表里是不是好友_微信如何快速查看是否为好友关系
  10. 未定义标识符_ConnectionPtr
  11. PRML 1.5 决策论
  12. Android 图像按钮ImageButton
  13. 字体设计符号组合多功能微信小程序源码
  14. Mac m1 tensorflow 内核似乎挂掉了,它很快将自动重启
  15. 新浪微博热门话题(字符串处理)
  16. iis中应用程序服务器错误,iis应用程序服务器错误
  17. 神舟笔记本电脑win10系统不能调节亮度问题
  18. 解决调用接口时的OPTIONS请求
  19. python标准库calendar判断年份是闰年和平年
  20. 代码分享 Python | 批量nc文件转tif

热门文章

  1. ROOT学习——一维直方图的条形图示例(hbars.C)
  2. 管理信息化企业如何开展品牌营销?
  3. BUUCTF RSA题目全解2
  4. rtklib学习——读取sp3和clk
  5. 极品时刻表2007.9.2(方便大家查火车时间)
  6. 手机遥控电脑软件(BtControid)
  7. springboot 支付宝支付(电脑网站)
  8. 万字报告:2019年人工智能发展趋势全解析
  9. 条款M33:将非尾端类设计为抽象类:将抽象类赋值运算符函数设为protected
  10. MPC模型预测控制原理和Matlab以及Python代码实现