上一篇里,笔者将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的用法还是这样:

Java代码  
  1. 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日志管理相关推荐

  1. Linux(b站视频兄弟连)自学笔记第十四章——日志管理

    Linux(b站视频兄弟连)自学笔记第十四章--日志管理 简介 rsyslogd 日志轮替 简介 rsyslogd 日志轮替

  2. 【Java从0到架构师】日志处理 - SLF4J、Logback、Log4j 2.x

    日志处理 - SLF4J.Logback.Log4j 2.x SLF4J + Log4j 1.x SLF4J + Logback Logback - 配置文件 Logback - 控制台彩色打印 Lo ...

  3. 【Java从0到架构师】日志处理 - Log4j 1.x、JCL

    日志处理 - Log4j 1.x Java 日志处理的发展史 Log4j 1.x 日志级别 - 6种 pattern - 输出格式 Log4j 1.x - properties 子Logger App ...

  4. tp5记录用户的操作日志_【干货】日志管理与分析(四)日志管理规程

    接<日志管理与分析(三)--对日志系统的攻击>,如果你的企业没有认真地对待日志,那么就可以说明你的企业对IT可审核性并不重视,这也就是日志记录成为一种完善的依从性技术,许多法规和法律以及最 ...

  5. Java程序员须知的七个日志管理工具

    本文由 ImportNew - 赖 信涛 翻译自 takipiblog.欢迎加入翻译小组.转载请见文末要求. Splunk vs. Sumo Logic vs. LogStash vs. GrayLo ...

  6. Linux日志写空,(十四)Linux日志管理

    第一节 日志管理简介 1.日志服务 在CentOS6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多 但是不论该服务的使用,还是日志文件的 ...

  7. java web 图灵_java架构师学习路线-Web架构的理解

    图灵学院  java架构师学习路线-Web架构的理解 Web体系结构可以理解为具有三种,一种是仅JSP页面,即所有逻辑,业务处理和页面代码都在JSP上.在执行简单而无关紧要的程序时可以使用此方法.它速 ...

  8. 学写一个 Java Web MVC 框架(四)

    访问请求处理 当客户端发送一个请求,被自定义的过滤器MvcDispatcher拦截,解析请求地址和参数对象跳转到一个控制器的方法中,然后执行进行逻辑处理后返回响应内容给MvcDispatcher输出, ...

  9. Java web application——基础

    概述 一个WAR文件包含了构成一个Web应用程序所需要的文件.WAR文件作为一个单元部署在一个或多个WebLogic Server实例上. WebLogic Server上的Web存档始终包含以下文件 ...

最新文章

  1. php判断是否已关注,php判断用户是否关注微信订阅号或公众号
  2. ThinkPHP--栏目增删改查ADSF
  3. 基于神经网络预测车道行驶的自动驾驶
  4. 引导界面滑动导航 + 大于等于1页时无限轮播 + 各种切换动画轮播效果
  5. BZOJ1345 [Baltic2007]序列问题Sequence
  6. 5G 是否能让国产手机回到群雄割据时代?
  7. java null转integer_java – 从null到int可以转换?
  8. 语法制导定义 SDD
  9. yyds!Java 性能优化的 50 个细节(珍藏版)
  10. ai人工智能最新相关消息_我如何了解最新的AI研究
  11. ROST_CM6软件之词频分析、社会网络和语义网络分析、情感分析
  12. SDRAM 控制器(七)——控制模块
  13. 通达信 移动平均算法_【股市钱包】A005号指标:通达信分时图MACD
  14. 小学计算机课评价方案,小学信息技术学科考核评价方案
  15. WEB-INF与META-INF详解
  16. 华三交换机如何进入配置_华三交换机配置方法及操作案例
  17. win7/ubuntu18 双系统安装和卸载
  18. Ios5(三)屏幕的旋转和大小设置;
  19. Grade for Android 之二:Groovy 与Java的语法区别
  20. rancher 企业级容器管理平台

热门文章

  1. EOSRAM那么火,BANCOR协议白皮书了解一下?
  2. node-webkit学习(2)基本结构和配置
  3. javascript实现深克隆的几种方法
  4. MongoDB管理: 使用killOp干掉Long Running Operation
  5. 制作OS X El CAPITAN安装U盘
  6. Java调用ocx控件以及dll
  7. 常玩手机会导致手指残疾? 专家称没依据
  8. AS 4.7安装yum
  9. Mac 10.12安装Office 2011
  10. Github Pages+Hexo+阿里云域名绑定