博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)log4j(七)——log4j.xml简单配置样例说明
阅读量:5918 次
发布时间:2019-06-19

本文共 4737 字,大约阅读时间需要 15 分钟。

背景:在公司中警察需要做技术支持,查看日志,而查看日志首先要自己清楚日志是如何生成的,所以有必要知道日志的前世今生!

转载出处:

 

1 测试环境与一样,这里不再重述

 

1 老规矩,先来个栗子,然后再聊聊感受

1.1 举例

(1)这里栗子有一点特别呀!给出了包名唉!想必有用,是的,配置文件中要特别说明一下的

package test.log4j.test8;import org.apache.log4j.LogManager;import org.apache.log4j.Logger;import org.apache.log4j.xml.DOMConfigurator;/** * Created by godtrue */public class UseLog4j {    //日志记录器    private static Logger LOGGER = LogManager.getLogger(UseLog4j.class);    //程序入口——主函数    public static void main(String[]args) {        //读取使用Java的特性文件编写的配置文件        DOMConfigurator.configure( "D:\\workspace_test\\hello-log4j\\log4j.xml" );        //输出日志信息,测试日志级别的作用(配置在配置文件中),仅仅输出大于等于目前有效级别的日志信息        LOGGER.debug("[1]-my level is DEBUG 天");        LOGGER.info("[2]-my level is INFO");        LOGGER.warn("[3]-my level is WARN");        LOGGER.error("[4]-my level is ERROR");    }}

ps:在main()中,加载log4j,还可以这么 写:

PropertyConfigurator.configure("log4j.properties");

(2)这段代码和(1)除了类名多了一个 _ ,并没有什么区别,那有什么用那?恩,有用的,一切为了测试,不信,你自己试试就更清楚了

package test.log4j.test8;import org.apache.log4j.LogManager;import org.apache.log4j.Logger;import org.apache.log4j.xml.DOMConfigurator;/** * Created by godtrue */public class UseLog4j_ {    //日志记录器    private static Logger LOGGER = LogManager.getLogger(UseLog4j_.class);    //程序入口——主函数    public static void main(String[]args) {        //读取使用Java的特性文件编写的配置文件        DOMConfigurator.configure( "D:\\workspace_test\\hello-log4j\\log4j.xml" );        //输出日志信息,测试日志级别的作用(配置在配置文件中),仅仅输出大于等于目前有效级别的日志信息        LOGGER.debug("[1]-my level is DEBUG 天");        LOGGER.info("[2]-my level is INFO");        LOGGER.warn("[3]-my level is WARN");        LOGGER.error("[4]-my level is ERROR");    }}

(3)如下的配置文件,仅列出了三种文件输出目的地的配置,他们相对比较常用,其中值得特别注意的是记录器的 name 和 additivity 这两个属性的作用,详情往下看注解,最好自己试试

ps:下面的配置文件十分的详尽,只要对号入座即可!

1.2 感受

      1)我们现在实际的项目使用的是log4j2,相应的配置方式和这里有所不同,抽时间我再好好玩一下

      2)如果整个log4j日志框架,按照比较平滑的学习曲线来学习的话,还是非常简单的,以前学习过,不过不做笔记就是学习一下,时间一长容易忘记各项配置都是干啥的,所以,在里再补上一笔,写博客的好处就体现出来了,等忘记了回头再看看,也许记忆就恢复了,谢谢博客园提供的游戏场所。——世界是个游乐场,我们都是上帝的孩子。

      3)编程这一行,我觉得应该重复的造轮子,特别是在学习某项技术的时候,网上关于log4j的博文也挺多的,刚开始我也找了一些来看,不过发现不好玩,不是自己的东西理解起来费劲不说,好多一实验还不灵,当然,有好多也是相当不错的,是经过试验的,不过不够详细。总之,好的要学习,而学习的最好途径还是自己多思考,多动手试验试验。

 

1.3 写这些博客我曾详细的看过一下资源(非常感谢,在此谢过!)

 1.4 补充知识

红唇log4j.rootLogger=日志级别,appender1, appender2, ….

  • 日志级别:ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF,不区分大小写
  • 注意,需在控制台输入,只需将其中一个appender定义为stdout即可
  • 注意,rootLogger默认是对整个工程生效
  • 注意,如果只想对某些包操作,那么:log4j.logger.com.hutu=info, stdout,表示该日志对package com.hutu生效
  • 注意,这样做可以区分dev/线上,也可以减小性能影响:if(log.isDebugEnabled()){log.debug();}

红唇 log4j.appender.appender1=org.apache.log4j.日志输出到哪儿

  • ConsoleAppender(控制台)
  • FileAppender(文件)
  • DailyRollingFileAppender(每天产生一个日志文件)
  • RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)
  • WriteAppender(将日志信息以流格式发送到任意指定的地方)
  • JDBCAppender(将日志信息保存到数据库中)

红唇 log4j.appender.appender1.File=文件目录及文件

${user.home}/logs/...

红唇 log4j.appender.appender1.MaxFileSize=最大文件大小

红唇 log4j.appender.appender1.MaxBackupIndex=备份文件个数

  • 其中,appender1是在第一行定义过的;
  • 文件目录及文件,例如,/home/admin/logs/hutudan.log
  • 最大文件大小,例如,100KB
  • 备份文件个数,例如,1

红唇 log4j.appender.ServerDailyRollingFile.DatePattern=日志后缀格式

  • 例如,'.'yyyy-MM-dd

红唇 log4j.appender.appender1.layout=org.apache.log4j.日志布局格式

  • HTMLLayout(以HTML表格形式布局)
  • SimpleLayout(包含日志信息的级别和信息字符串)
  • TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
  • PatternLayout(可以灵活的指定布局格式,常用

红唇 log4j.appender.appender1.layout.ConversionPattern=日志输出格式

  1. 例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
  2. %c 输出日志信息所属的类的全名
  3. %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
  4. %f 输出日志信息所属的类的类名
  5. %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
  6. %m 输出代码中指定的信息,如log(message)中的message
  7. %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
  8. %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
  9. %r 输出自应用启动到输出该日志信息所耗费的毫秒数
  10. %t 输出产生该日志事件的线程名
  11. 可参考:

红唇 log4j.appender.ServerDailyRollingFile.Append=true

  • 例如,不解释,追加往后写便是

红唇 总结一下:

  • Logger类:完成日志记录,设置日志信息级别
  • Appender类:决定日志去向,终端、DB、硬盘
  • Layout类:决定日志输出的样式,例如包含当前线程、行号、时间
你可能感兴趣的文章
SpringMVC的执行流程
查看>>
定位、读取手机状态等权限在6.0系统不管用
查看>>
FTP服务器开发
查看>>
CDN WAF功能开放公测 提升网络应用安全性能
查看>>
vivo Y51的USB调试模式在哪里,开启vivo Y51USB调试模式的教程
查看>>
zip压缩与解压
查看>>
hibernate,get,find,缓存,hibernate缓存
查看>>
DataTable排序,检索,合并详解
查看>>
ClusterwarePRCT-1011:Failed to run "oifcfg".Det...
查看>>
golang grpc 负载均衡
查看>>
解决hive中comment中文乱码的问题
查看>>
windows服务监控工具--Spotlight
查看>>
Run 'setenforce 1'to reenable 解决
查看>>
Linux目录详解
查看>>
cgroup实现cpu绑定和资源使用比例限制
查看>>
为什么你的企业需要SaaS服务
查看>>
51cto学院与我的产品经理之路
查看>>
mysql死锁,等待资源,事务锁,Lock wait timeout exceeded; try restarting transaction解决...
查看>>
如何部署Outlook Anywhere
查看>>
我的友情链接
查看>>