背景

程序开发调试中,不可缺少的便是日志管理,常用的日志管理框架有如下几种:

Log4j:Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一。Log4j 2: Apache Log4j 2是Apache开发的一款Log4j的升级产品。Commons Logging: Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging。Slf4j: 类似于Commons Logging,是一套简易Java日志门面,本身并无日志的实现。(Simple Logging Facade for Java,缩写Slf4j)。Logback: 一套日志组件的实现(Slf4j阵营)。Jul (Java Util Logging),自Java1.4以来的官方日志实现。因框架众多,本章重点介绍Log4j使用方法,在文中若有误解的地方烦请各位读者提出,在这里小编先感谢百忙之中的您提出宝贵的意见。

Log4j入门介绍

Log4j是什么?一个开源的、轻量级的、用于日志管理的框架。

Log4j用途?日志监控打印,在项目运行期需要记录用户所有的操作;程序调试期间,记录运行的步骤和运行;多个日志的输出源,比如到数据库、eclipse控制台,或者日志文件到linux服务器下等。Log4j常用配置文件有以下两种方式:log4j.propertieslog4j.xmlLog4j日志级别

Log4j日志级别有以下几种:

OFF 最高等级,用于关闭所有日志记录;FATAL 指出每个严重的错误事件将会导致应用程序的退出;ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行;WARN 表明会出现潜在的错误情形;INFO 一般和在粗粒度级别上,强调应用程序的运行全程;DEBUG 一般用于细粒度级别上,对调试应用程序非常有帮助。ALL 最低等级,用于打开所有日志记录。常用日志级别:

常用日志级别有:ERROR、WARN、INFO、DEBUG;排列顺序(从高到低):DEBUG < INFO < WARN < ERROR;日志打印规则: 打印自身往后靠。获取方式:

private static final Logger logger = Logger.getLogger(ClassName.class);

输出源Appender、布局LayOut

输出源Appender

输出源

布局LayOut

布局

Appender、Layout、Logger三者之间的关系:每个appender后面必然需要跟随layout,指定自己的风格样式 ;每个Logger都可以指定一个级别,同时引用多个Appender;每个Appender也同时可以被多个Logger引用。配置文件设置

rootLogger(配置根logger):

root L o g ge r

appender(配置日志输出目的地):

appender

layout(配置日志信息的格式/布局):

layout

配置文件常用选项属性

ConsoleAppender选项属性:Threshold=DEBUG: 指定日志消息的输出最低层次;ImmediateFlush=true: 默认值是true,意谓着所有的消息都会被立即输出;Target=System.err:默认值System.out,输出到控制台(err为红色,out为黑色)。

FileAppender选项属性:Threshold=DEBUF:指定日志消息的输出最低层次;ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出;File=mylog.txt:指定消息输出到mylog.txt文件;Append=false:默认值是true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容;Encoding = UTF-8:可以指定文件编码格式。

DailyRollingFileAppender选项属性Threshold = WARN: 指定日志消息的输出最低层次;ImmediateFlush = TRUE: 默认值是true,所有的消息都会被立即输出;File = C:\log4j.log:指定消息输出到C:\log4j.log文件;Append = FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容;Encoding = UTF-8:可以指定文件编码格式;DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。其中DatePattern还可以是以下参数文件:'.'yyyy-MM:每月'.'yyyy-ww:每周'.'yyyy-MM-dd:每天'.'yyyy-MM-dd-a:每天半天'.'yyyy-MM-dd-HH:每小时'.'yyyy-MM-dd-HH-mm:每分钟

RollingFileAppender选项属性:Threshold = ERROR:指定日志消息的输出最低层次;ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出;File = C:/log4j.log:指定消息输出到C:/log4j.log文件;Append = FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容;MaxFileSize = 100KB:后缀可以是KB,MB,GB.在日志文件到达该大小时,将会自动滚动;例如:log4j.log.1MaxBackupIndex = 2:指定可以产生的滚动文件的最大数;Encoding = UTF-8:可以指定文件编码格式。

HTMLLayout选项属性:LocationInfo = TRUE:默认值false,输出java文件名称和行号;Title=Struts Log Message:默认值 Log4J Log Messages。

PatternLayout选项属性:ConversionPattern = %m%n:格式化指定的消息

XMLLayout选项属性:LocationInfo = TRUE:默认值false,输出java文件名称和行号

配置文件Log4j.properties和Log4j.xml优先级

log4j.xml优先于log4j.properties;log4j.xml的优势:1. filter精确匹配,避免往后靠的大于等于,可以OnlyOne过滤出我需要的;2.additivity="false"精确匹配,停止传播。

附注

因时间有限,文章中Log4j和Log4j.xml具体代码未进行展示,若有需要可随时@我。小编在这里致敬每一位技术人,另外祝大家国庆快乐!!!!

java日志优雅打印格式_优雅编程之日志排查Log4j相关推荐

  1. java项目统一打印入参出参等日志

    java项目统一打印入参出参等日志 1.背景 2.设计思路 3.核心代码 3.1 自定义注解 3.2 实现BeanFactoryPostProcessor接口 3.3 实现MethodIntercep ...

  2. java word导出图片格式_用java怎么将word文档转成图片格式

    展开全部 使用 java 操作 openoffice 实现格式转换 辛苦了几天. 不敢独享成果 首先,要安装 openoffice (废话- -) 创建JAVA项目的时候 需要323131333532 ...

  3. java浮点数的打印格式规则(笔记)

    java的正常打印是System.out.println() 然而正常打印只能打印部分格式的变量和字符串,遇到需要规定打印的内容格式的情况时,就不能用常规打印了. 比如:设定double amount ...

  4. printf打印二进制_优雅地打印 HEX 数据

    优雅地打印 HEX 数据 " 代码片段. 在调试的时候经常要打印内存里的数据,来看看数据及格式是否在预期范围内:以及在调试二进制协议的时候,经常需要将协议包里的数据打印出来,这个时候就会涉及 ...

  5. java从电脑接收数据丢失_网络编程:Java数据报之失序和丢包Java -电脑资料

    习惯了TCP编程,认为UDP可以包办这些问题是错误的, 习惯了TCP编程,认为UDP可以包办这些问题是错误的.一个UDP应用程序要承担可靠性方面的全部工作,包括报文的丢失.重复.时延.乱序以及连接失效 ...

  6. java while语句打印三角形_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

  7. python 优雅的写法_优雅的python写法

    1. 交换变量1a, b = b, a 2. 循环遍历区间1 2 3 4for i in range(6): print (i) ``` ## 3. 带有索引位置的集合遍历 for i, color ...

  8. java utf8无bom格式_关于java:编写没有BOM的UTF-8

    p>这段代码,/ p> pre> code> OutputStream out = new FileOutputStream(new File("C:/file/te ...

  9. java中支持mp3格式_可以播放mp3格式文件的机器,都遵守了什么协议,才能让mp3格式的文件可以:“一处保存,到处播放?...

    //题主修改了问题,第一段的立场就有点奇怪了 >_<.> //不是mp3格式去适应各种机器的,是各种机器按照mp3规范通过硬件或软件去解码mp3格式的文件,然后经过DAC(数字-&g ...

最新文章

  1. shell监控MySQL服务是否正常
  2. Python笔记总结(1)
  3. Linux常用命令-入门
  4. 阿里云服务器 宝塔面板 配置Python项目
  5. gossip 区块链_区块链技术创新生态 Gossiptoken黑马横空出世
  6. Bootloader概述
  7. 【转】ABP源码分析四:Configuration
  8. MYSQL 常用查询命令
  9. echarts导出为pdf
  10. 巧用讯飞TTS进行文本合成语音(LINUX操作系统)
  11. 好的vue框架-模板
  12. 用Math函数中的random随机数模拟骰子
  13. 英伟达JETSON XAVIER NX使用小记
  14. matlab多元回归分析怎么计算,第11讲_matlab多元回归分析
  15. QTEmbedded VCN实现
  16. VBA批量OCR识别提取身份证照片信息_白描网页版 - 高效准确且免费的OCR文字识别工具...
  17. 学数答题160904-不等式
  18. python barrier_Python中的Barrier对象
  19. 人工智能之无人驾驶技术到底是怎么回事
  20. FFmpeg实现视频倒放: reverse/areverse滤镜

热门文章

  1. Vue新手:实现文件预览功能的前端
  2. 小程序this.setData
  3. python导入数据画直方图加正态曲线_Python数据分析入门 - 正态分布
  4. 图形学笔记(五)——曲线
  5. springboot购物商城
  6. 小米商城header-logo过渡效果
  7. VMware Workstaion-从零创建centos虚拟机
  8. 如何变成一个有趣的人
  9. 【一建、一造经验分享】一建挺难的,要坚持才能得到
  10. 【OJ每日一练】1184 - 硬币