Log4j使用技巧——让子类使用父类中定义的Logger
在项目中,有时候会遇到这么一种情况,我们需要记录一些类的使用情况,在类的声明中,我们会如此声明一个logger:
private static final Logger logger=Logger.getLogger(MyClass.class);
然后再用这个logger来打印我们关心的信息。这种方法一直都很不错在我们的类比较少的情况下。不过在类大量增加时,我们发现这种方法并不是一个好的方法,它使我们的工程看上去臃肿不堪,于是,我们必须采用一种简洁的方法来替换它,确保其能够让我们的程序看起来舒服一些。
首先定义一个父类,让logger作为其的一个成员变量,类型可以为protected或default;其次在父类的构造函数里初始化该logger:
logger=Logger.getLogger(getClass().getName());
使用这种方法,其子类就可以直接引用父类中定义的logger来记录我们所关心的信息,此外,更重要的是,使用getClass().getName(),可以使我们成功地将logger命名为子类的名称,同样能够丰富我们的调试信息,帮助我们定位问题所在。
相关代码如下:
//父类
public abstract class Parent {
protected Logger logger =null ;
public Parent(){
logger=Logger.getLogger(getClass().getName());
}
}
//子类
public class Son extends Parent {
public void test(){
logger.info("successful!");
}
public static void main(String[] args) {
(new Son()).test();
}
}
转载于:https://blog.51cto.com/cuiyingfeng/6625
相关文章:

区分json与jsonp
JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别,但其实他们根本不是一回事儿,下边简单区分概括一下: JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。…

通俗理解PCA降维作用
作者 | 黄礼泊,广东工业大学数据挖掘与信息检索实验室(DMIR),机器学习与人工智能,目前研究方向最优化,将最优化理论运用在图像检索、压缩感知生物信号处理等领域。▌概述 本文主要介绍一种降维方法,PCA(Pr…

windows和linux添加引导文件,Linux与Windows 10用grub引导教程-Go语言中文社区
前言去年暑假的时候,写了一篇如何装 Linux 和 Windows 10 双系统的文章发在了简书上,我写这篇文章的原因是当初装双系统确实是折腾了许久,网上也找不到一篇详尽的教程。由于去年对于写教程还不是熟练,而这一年多的使用过程也遇到了…
使用Apache对Tomcat进行负载均衡
翻译:疯狂的技术宅原文标题:Load balancing tomcat with Apache原文链接:http://programmergate.com/loa...本文首发微信公众号:充实的脑洞有时候我们需要把自己的应用部署在多个Tomcat实例上,这种场景通常是在使用大量…

linux数据库什么意思,Linux系统中的数据库命令是什么
Linux系统中难免会跟数据库打交道的时候,掌握数据库相关命令是很重要的。下面由学习啦小编为大家整理了Linux系统中数据库命令是什么的相关知识,希望对大家有帮助!Linux系统中的数据库命令是什么:常用命令1.linux下启动mysql的命令࿱…

C#.NET 中的类型转换
前些天,碰到了数据类型转换与格式化问题,在网上查找了一下,有人已经把它写了出来,粘贴如下,共大家分享:C#.NET 中的类型转换C# 出来也有些日子了,最近由于编程的需要,对 C# 的类型转…

『科学计算』可视化二元正态分布3D科学可视化实战
二元正态分布可视化本体 由于近来一直再看kaggle的入门书(sklearn入门手册的感觉233),感觉对机器学习的理解加深了不少(实际上就只是调包能力加强了),联想到假期在python科学计算上也算是进行了一些尝试学…

继中美之后,欧盟会成为下一个 AI 超级体吗?
美国和中国已经是毋庸置疑的AI超级体了,那么欧盟有可能成为下一个吗?德国总理安格拉默克尔以冷酷无情著称,但需要的时候她也可以很幽默。在最近一次由科技杂志《Ada》举办的季度会议上,有人问她是否认为机器人应当拥有权利&#x…

Transformer新型神经网络在机器翻译中的应用 | 公开课笔记
嘉宾 | 于恒来源 | AI科技大本营在线公开课编辑 | Jane于恒:直播间的朋友大家好!欢迎大家来到本次AI科技大本营公开课,我是本次讲师于恒。在讲课开始之前先简短的做个自我介绍,我是博士毕业于中国科学院计算技术研究所,…

linux终端vi退出命令,如何从命令行关闭vim?
问题描述我知道这更像是一个普通的linux问题,但是没有。因此,当我在命令提示符下输入类似vim的程序时,它会显示文件中的所有文本,我可以编辑它等等。但是我无法弄清楚如何关闭或保存文件并返回命令提示符而不会被杀死这个过程。任…

Mysql 小数点后最多保留两位数
CAST(money/100 as DECIMAL(10,2)) AS num 转载于:https://www.cnblogs.com/moxiaoping/p/7611090.html

这次拿下Python全靠它了!一个交互式的学习资源!
你的假期余额已不足!在假期的最后一天,我们给大家介绍一本非常 nice 的 Python 学习书——Project Python。Project Python是一本免费的交互式书籍,它通过使用图形、动画和游戏来教你用 Python编写代码。后面你还将学到解决经典计算机科学问题…

linux启动sql server数据库,SQL Server数据库启动过程详解及启动不起来的问题分析及解决方法...
第五步、启动系统数据库modelmodel系统数据库同样也是SQL Server启动过程中用到的一个非常关键的数据库,如果这个库损坏,SQL Server启动也会失败,关于model数据不能启动的原因基本和master的类似,同样也是两种:1、数据…

navicat对mysql的备份
1:备份位置:_3306的“连接信息”可以看到。或者点:前往设置保存路径 2:建议一定时间点进行备份或者命令执行;转载于:https://blog.51cto.com/q168988/1969780

上当记,收国外快递时,注意相关责任定义
刚才在收到M$从米国寄来的包裹时,一时大意给了送快递的1百多的税钱,后来想想不对,在包裹上看到DDP字样(Delivery duty paid),上网一查DDP: “完税后交货(……指定目的地&…

python远程登录linux命令,Python+requests通过paramiko远程登录Linux执行sh命令
在做自动化测试过程中, 偶尔需要登录Linux服务器执行一些sh命令。Python的paramiko模块, 遵循SSH2协议, 支持以加密和认证的方式远程连接服务器, 可用来连接远程linux主机, 然后执行Linux命令或者通过SFTP传输文件封装的方法import paramikoclass Operate_Server():def __init_…

2017-09-29 前端日报
2017-09-29 前端日报 精选 被誉为神器的requestAnimationFrame我是怎样让网站用上HTML5 ManifestReact 的性能优化(一)当 PureComponent 遇上 ImmutableJSJavaScript 异步队列实现及拓展CSS Grid Gotchas And Stumbling BlocksAbortable fetchAlloyTeam …

Apache Kylin v2.5.0正式发布,开源分布式分析引擎
文章转载自开源中国,作者 Apache Kylin 社区日前,Apache Kylin 社区宣布,Apache Kylin v2.5.0 正式发布。Apache Kylin 是一个开源的分布式分析引擎,旨在为极大数据集提供 SQL 接口和多维分析(OLAP)的能力。…

不同职业阶段的修炼: 多与少
有多才有少 开学第一天,教室里挤满来选修“领导”课程的学生,这一群两年后就会变成企业竞相争取的名校MBA,心中难免兴奋地等待教授的出现。教室门被推开后,走进三个人,教授后面跟着一个年轻的陌生人,还有一…

underscorejs之 _.indexBy(list, iteratee, [context])
语法 _.indexBy(list, iteratee, [context]) 说明 给定一个list,和 一个用来返回一个在列表中的每个元素键 的iterator 函数(或属性名), 返回一个每一项索引的对象。和groupBy非常像,但是当你知道list的key是唯一的时候…

linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法
一、Shell脚本中$0、$?、$!、$$、$*、$#、$等的意义说明(1)$$Shell本身的PID(ProcessID,即脚本运行的当前进程ID号)(2)$!Shell最后运行的后台Process的PID(后台运行的最后一个进程的进程ID号)(3)$?最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示…

云从科技完成B+轮超10亿元融资,多个国家基金进入
10 月 8 日,中国人工智能国家队云从科技宣布正式完成新一轮超 10 亿元人民币融资,除元禾原点、越秀金控,刘益谦等原有股东继续跟投外,本轮新增了多家中国国家战略投资者,其中不乏知名地方政府基金,包括中国…

12×××求职经过-之求职信
求职信: 鼠:本地户口,以前在武钢工地打过工,转移过一部分钢材的所有权,被当做失足青年挽救三年。擅长上夜班,会开麻木,求社区服务,家政等职。 牛:身体好,能吃…

面向对象三大特性一一封装(encapsulation)
为什么要封装? 我们看电视,只要按一下开关和换台就行了。有必要了解电视的内部结构吗?有必要了解显像管吗? 封装是为了隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性&a…

云计算赋能人工智能,未来的红利在哪?
“云”这个概念对于身处于信息时代的我们而言越来越熟悉,而云计算平台作为对计算机软硬件资源进行集中存储、管理的平台,已经不再是一个遥远的 IT 概念,它开始渗透到各行各业,未来将会像水和电一样,作为基础设施&#…

pxe linux 配置文件,Linux PXE 部署
一、基础环境准备Linux配置静态IP-192.168.5.1# vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICEeth0ONBOOTyesBOOTPROTOstaticIPADDR192.168.5.1NETMASK255.255.255.0:x --保存退出#service network restart#service iptables stop二、准备安装镜像#mount /dev/cdrom /m…

Keras还是TensorFlow?深度学习框架选型实操分享
译者| 王天宇、林椿眄责编| Jane、琥珀出品| AI科技大本营深度学习发展势头迅猛,但近两年涌现的诸多深度学习框架让初学者无所适从。如 Google 的 TensorFlow、亚马逊的 MXNet、Facebook 支持的 PyTorch、Theano、Caffe、CNTK、Chainer、百度的 PaddlePaddle、DSSTN…

Android -- queryIntentActivities
某些时候你想要知道某个APP是否有注册了一个明确的intent,比如说你想要检查某个receiver是否存在,然后根据是否存在来这个receiver来在你的AP里面enable某些功能。我们可以通过PackageManager来check它。 code public boolean isIntentAvailable(Context…

吉大c语言程序设计作业一,吉林大学历年C语言程序设计试题及答案.doc
吉林大学历年C语言程序设计试题及答案吉林大学历年C语言程序设计试题及答案(5)END2000年试题答案一、(1)解题思想: 用5个数 a,b,c,d,e,来回替换,最终f(n)算出。设计程序如下:int F(int n){ if(n <5) return n ;int temp,a1;b2;c3;d4;e5;fo…

忍不住心中的激动
天天上自行车旅行网,看到别人的出行游记,心里很羡慕,也很冲动,想想还有1个多月就可以出发了,不知道能坚持到哪里,恒心是有的,可身体就不知道,不过这次时间可以不用那么紧,…