Java Web Application 自架构 四 Log4j2日志管理
上一篇里,笔者将DAO做了一个通用的实现,不过在继续之前,我们好像忘了些什么。就是做任何程序都不可缺少的东东,一个对程序的功能没什么用,很容被遗忘,但是每个方法里都需要有的东西,那就是日志。
笔者以往的经验都是将Log4j配置到Spring中去用,顺着这一点,访问了下log4j的官网,进而看到了新东东log4j2,粗略地看了一下介绍:比log4j更好的性能,做了些logback的实现甚至还解决了些logback的固有的问题,支持多种facade框架。听起来还不错,于是动了把这玩意儿加到Spring中的想法,到网上去搜娄了一翻后。。。 好吧,我承认东西很少,只能是苦读官方的英文文档加debug状态看源码了。
在log4j2的官网http://logging.apache.org/log4j/2.x/上,瞅一眼左侧的导航栏,大致都点进去看一下:API里说的需要JDK1.5以上,Architecture里的类架构图,以及与log4j的集成或转换等等。这些都不重要,因为目前没有用到,需要时候再来看不迟。我们的重点是Configuration. 进入Configuration页面,细读一下吧。
看到Configuration中所述,配置可以是xml形式,可以是json形式,也可以是编码的方式(Programmatically),我们要的是可以配到前面所写的由Spring@Configuration标注的ApplicationContext.java中的方式,当然就是编码方式,二话不说,直接按其所指,看看ExtendingLog4j 2 里怎么说。一堆诸如@Plugin的注解式配置,大喜。不过整了半天,没奏效。想想即使好用,配置到Spring中也是一件费力的事儿,还是去Debug吧。Log的用法还是这样:
- Logger logger = LogManager.getLogger(this.getClass());
Logger logger = LogManager.getLogger(this.getClass());
顺着这条藤,自是能摸到瓜的。LogManager中有Log4jContextFactory,用来选择生成LoggerContext.我们看到Context这个词,很容易就想到它是要干什么的:一个装载了很多通过名字得到的唯一单例的容器,所说的单例自然是Logger。正因如此,LogManager里的这个LoggerContext可以通过类名将logger一一对应。OK,不废话了,继续:在LoggerContext被实例化时,它有个属性Configuration也被同时实例化,这个实例是DefaultConfiguration类型.实例化后Facotry又将Context启动,调用了LoggerContext.start()方法,该方法会reconfiguraion()。这个reconfiguration()会进行系统下的配置找寻,也就是按照我们看到的官网中AutomaticConfiguration里所写的配置顺序进行找寻。(多一嘴:这里Debug过程中也确认了它在找系统默认ClassLoader中去找被注解所注的配置,而且看到我注解的类确实在ClassLoader里,至于为什么没有被加载,始终搞不明白)。继续Debug会看到最后它什么也没找到又加载一遍DefaultConfiguration。
转载于:https://blog.51cto.com/daheyuan/1134642
Java Web Application 自架构 四 Log4j2日志管理相关推荐
- Linux(b站视频兄弟连)自学笔记第十四章——日志管理
Linux(b站视频兄弟连)自学笔记第十四章--日志管理 简介 rsyslogd 日志轮替 简介 rsyslogd 日志轮替
- 【Java从0到架构师】日志处理 - SLF4J、Logback、Log4j 2.x
日志处理 - SLF4J.Logback.Log4j 2.x SLF4J + Log4j 1.x SLF4J + Logback Logback - 配置文件 Logback - 控制台彩色打印 Lo ...
- 【Java从0到架构师】日志处理 - Log4j 1.x、JCL
日志处理 - Log4j 1.x Java 日志处理的发展史 Log4j 1.x 日志级别 - 6种 pattern - 输出格式 Log4j 1.x - properties 子Logger App ...
- tp5记录用户的操作日志_【干货】日志管理与分析(四)日志管理规程
接<日志管理与分析(三)--对日志系统的攻击>,如果你的企业没有认真地对待日志,那么就可以说明你的企业对IT可审核性并不重视,这也就是日志记录成为一种完善的依从性技术,许多法规和法律以及最 ...
- Java程序员须知的七个日志管理工具
本文由 ImportNew - 赖 信涛 翻译自 takipiblog.欢迎加入翻译小组.转载请见文末要求. Splunk vs. Sumo Logic vs. LogStash vs. GrayLo ...
- Linux日志写空,(十四)Linux日志管理
第一节 日志管理简介 1.日志服务 在CentOS6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多 但是不论该服务的使用,还是日志文件的 ...
- java web 图灵_java架构师学习路线-Web架构的理解
图灵学院 java架构师学习路线-Web架构的理解 Web体系结构可以理解为具有三种,一种是仅JSP页面,即所有逻辑,业务处理和页面代码都在JSP上.在执行简单而无关紧要的程序时可以使用此方法.它速 ...
- 学写一个 Java Web MVC 框架(四)
访问请求处理 当客户端发送一个请求,被自定义的过滤器MvcDispatcher拦截,解析请求地址和参数对象跳转到一个控制器的方法中,然后执行进行逻辑处理后返回响应内容给MvcDispatcher输出, ...
- Java web application——基础
概述 一个WAR文件包含了构成一个Web应用程序所需要的文件.WAR文件作为一个单元部署在一个或多个WebLogic Server实例上. WebLogic Server上的Web存档始终包含以下文件 ...
最新文章
- php判断是否已关注,php判断用户是否关注微信订阅号或公众号
- ThinkPHP--栏目增删改查ADSF
- 基于神经网络预测车道行驶的自动驾驶
- 引导界面滑动导航 + 大于等于1页时无限轮播 + 各种切换动画轮播效果
- BZOJ1345 [Baltic2007]序列问题Sequence
- 5G 是否能让国产手机回到群雄割据时代?
- java null转integer_java – 从null到int可以转换?
- 语法制导定义 SDD
- yyds!Java 性能优化的 50 个细节(珍藏版)
- ai人工智能最新相关消息_我如何了解最新的AI研究
- ROST_CM6软件之词频分析、社会网络和语义网络分析、情感分析
- SDRAM 控制器(七)——控制模块
- 通达信 移动平均算法_【股市钱包】A005号指标:通达信分时图MACD
- 小学计算机课评价方案,小学信息技术学科考核评价方案
- WEB-INF与META-INF详解
- 华三交换机如何进入配置_华三交换机配置方法及操作案例
- win7/ubuntu18 双系统安装和卸载
- Ios5(三)屏幕的旋转和大小设置;
- Grade for Android 之二:Groovy 与Java的语法区别
- rancher 企业级容器管理平台