首页 / 知识
关于日志记录:自动确定调用者的类名的Java记录器
2023-04-16 10:27:00

Java logger that automatically determines caller's class name
此方法将返回一个知道其正在记录的类的记录器。 很多年后:https://github.com/yanchenko/droidparts/blob/master/droidparts/src/org/droidparts/util/L.java n 创建堆栈跟踪是一个相对较慢的操作。您的呼叫者已经知道它所在的类和方法,因此浪费了精力。解决方案的这方面效率很低。 即使您使用静态类信息,也不应为每个消息再次获取Logger。来自Log4j的作者,Ceki G ?? lc ??:
这是在类初始化期间获取Logger的常规,有效的习惯用法:
请注意,这为层次结构中的每种类型提供了单独的Logger。如果您想出一种在实例上调用 很显然,通过 我们实际上在LogUtils类中有一些非常相似的东西。是的,这有点棘手,但是就我而言,优势是值得的。我们想确保不会因为被重复调用而产生任何开销,因此我们(有点hackyly)确保只能从静态初始化器上下文la: 中调用它
如果是通过常规方法或实例初始化程序(即,如果在上面未使用"静态"的方法)调用,则会失败,以降低性能开销的风险。方法是:
任何人问这比 有什么优势
也许从来没有必要与从其他地方复制并粘贴该行而忘记更改类名的人打交道,而让您处理将其所有内容发送到另一个记录器的类。 我想每门课都会增加很多开销。每个班级都必须"查找"。您可以创建新的Throwable对象来实现这些目的……这些Throwables并非免费提供。 假设您要保留对记录器的静态引用,这是一个独立的静态单例:
用法很干净:
对于与之一起使用的每个类,无论如何都将不得不查找Logger,因此您最好在这些类中使用静态Logger。
然后,您仅在需要执行日志消息时引用该记录器。您的方法执行的操作与静态Log4J Logger已经执行的操作相同,所以为什么要重新发明轮子呢? n 那么最好的事情就是两者的混合。
然后在每个班级:
在代码中:
您将获得可以复制的静态记录器 您不需要创建新的Throwable对象。你可以打电话 我更喜欢为每个类创建一个(静态)记录器(使用它的显式类名)。我比原样使用记录器。 您当然可以只使用具有适当模式布局的Log4J:
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html n n n n n 此机制在运行时付出了很多额外的努力。 如果将Eclipse用作IDE,请考虑使用Log4e。这个方便的插件将使用您喜欢的日志记录框架为您生成记录器声明。在编码时的工作量要少一些,但在运行时的工作量要少得多。 n 为什么不呢?
然后在需要记录器上课时:
n 除非您真的需要Logger保持静态,否则可以使用
|
最新内容
相关内容
Python之metaclass的原理和用法
Python之metaclass的原理和用法,工厂,异常,概念,下游,当中,实例,情况,产品,代码,设计,metaclassmetaclass的英文直译过来就是元类,这既是一个python怎么调用class
python怎么调用class,培训,方法,实例,静态,参数,定义,关键字,以上,更多,内容,python类方法和静态方法都可以被类和类实例调用,类实例方法仅可python如何用class
python如何用class,数据,培训,设计,类型,下标,成员,函数,定义,使用方便,功能强大,python中所有的数据都是对象,它提供了许多高级的内建数据类pythonclass如何使用
pythonclass如何使用,数据,培训,设计,类型,下标,成员,函数,使用方便,功能强大,组成部分,python中所有的数据都是对象,它提供了许多高级的内建python如何定义class
python如何定义class,代码,数据,概念,名字,培训,工作,形态,对象,函数,方法,python中的类(Class)是一个抽象的概念,比函数还要抽象,这也就是Pythpythonclass有什么用法
pythonclass有什么用法,数据,培训,变量,公用,基础,实例,方法,对象,定义,声明,1.PythonClass的基础用法类(Class):用来描述具有相同的属性和方pythonclass怎么写
pythonclass怎么写,培训,下来,数据,公共,概念,实例,方法,时候,属性,定义,类(Class)和实例(Instance)是面向对象最重要的概念。类是指抽象出的pythonclass怎么用
pythonclass怎么用,设计,数据,概念,培训,类型,成员,下标,函数,定义,事物,python中所有的数据都是对象,它提供了许多高级的内建数据类型,功能强pythonclass是什么
pythonclass是什么,名称,时间,概念,代码,培训,定义,属性,对象,方法,冒号,python中的class是什么1、概念用来描述具有相同的属性和方法的对象关于Windows:如何以人类可读的方式
关于Windows:如何以人类可读的方式打开Java .class文件?,关于Windows:如何以人类可读的方式打开Java .class文件?,显示,类文件,文本,有关于delphi:哪个日志记录库更好?
关于delphi:哪个日志记录库更好?,关于delphi:哪个日志记录库更好?,日志记录,跟踪,如果您,我在,Which logging library is better?我在想;关于Java:如何获取参数化的Class实
关于Java:如何获取参数化的Class实例,关于Java:如何获取参数化的Class实例,泛型,参数化,的是,很清楚,How to get parametrized Class i