文档章节

由声明logger谈起

小紅
 小紅
发布于 2015/06/02 09:45
字数 279
阅读 107
收藏 4

最近看一些old fasion的代码,发现仅仅一个logger的声明,就很有意思。

以SLF为例,

首先是推荐的写法:

private final static Logger logger = LoggerFactory.getLogger(MyClass.class);

然后按词解读:

private :保持私有,不给外部类机会;
final   :保持不变,不给修改的机会;
static  :保持静态,节省开销;

至于 

LoggerFactory.getLogger(MyClass.class);

我们能看到某些使用getClass() 替代的方法。

这里有些利弊:

getClass(): 不能使用static修饰,Java初始化顺序导致;


MyClass.class : 不能动态显示子类归属的log;


Ref: 1   2  3  4


——————————————分割线——————————————

刚才跟同事讨论了一下,好像关于是否static有很大争议 ,各有各的好处。

然后,对于某些共享类,特别是没有自己log的module,怎么加log也很有意思。

看过之前的某个遗留代码,为了拿className费尽周折啊,不过这种有并发问题,权作拓展思路吧

    public static void info(String msg) {
    	if(useLog4j)
    	{
    		instance.log4jLogger=org.apache.log4j.Logger.getLogger(getClassName());
    		instance.log4jLogger.info(getMethodName() +" : "+msg);
    	}
    	else
    	{
        	instance.logger.logp(Level.INFO, getClassName(), getMethodName(), msg);
    	}
    }
     private static String getClassName() {
        Throwable t = CusLogger.e.fillInStackTrace();
        StackTraceElement elements[] = t.getStackTrace();
        StackTraceElement element = elements[2];
        return element.getClassName();
    }




















© 著作权归作者所有

小紅

小紅

粉丝 12
博文 43
码字总数 30598
作品 0
塘沽
程序员
私信 提问
获取 Log4Qt 中的 logger

简述 在 Log4Qt 中,有一个很重要的类 - Logger,用于提供日志服务。那么,如何获取 logger 呢? 关于这部分,Log4Qt 中有一个简单的描述: Request a logger by either calling Log4Qt::Log...

u011012932
2017/12/12
0
0
log4j声明多个Logger对象与一个Logger对象有什么区别不

log4j声明多个Logger对象与一个Logger对象有什么区别不? 如果所有写入都调用一个logger对象,对多线程的处理有阻塞么?

JATII
2016/03/10
595
1
Spring容器中Bean的生命周期

Spring中bean的生命周期相对于传统的Java应用中bean的生命周期要复杂一点,bean从创建到销毁,要经过如下几个步骤: 初始化bean。 填充属性:Spring将bean的依赖注入到bean的属性中。 如果b...

一书生
2016/05/20
116
0
spring-mvc入门(一)——springmvc框架

版权声明:欢迎访问,本文为小编原创文章 https://blog.csdn.net/changyinling520/article/details/78177312 谈起spring-mvc,都知道是spring框架的一部分,其实springmvc是一个基于mvc的一个...

常银玲-Judy
2017/10/08
0
0
在继承时声明slf4j实例的一个注意点

java中的log组件有,log4j, commons-logging, slf4j等, 在声明的时候, 常见或者来作为名称, 这两种方法各有特点,总体来说方便一些, 不过本人今天在继承中遇到了点微妙的差异, 在这里给大家分享...

taojinhuo
2013/01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

未来,哪些技术在前端开发的地位会越来越高?

转眼2019也快走到下半年,过去的这段时间里,不论是互联网巨头还是初创企业,都纷纷进行了一波优化。渐趋理智的资本淘汰了一批不能适应市场的业务,而业务的紧缩也淘汰了一批不能适应市场的程...

智云编程
36分钟前
0
0
Golang math基本数学函数

三角函数 正弦函数,反正弦函数,双曲正弦,反双曲正弦 func Sin(x float64) float64 func Asin(x float64) float64 func Sinh(x float64) float64 func Asinh(x float64) float64 一次性返回......

Sunki
39分钟前
0
0
SpringBoot系列教程JPA之新增记录使用姿势

SpringBoot系列教程JPA之新增记录使用姿势 上一篇文章介绍了如何快速的搭建一个JPA的项目环境,并给出了一个简单的演示demo,接下来我们开始业务教程,也就是我们常说的CURD,接下来进入第一...

小灰灰Blog
今天
7
0
大话文本检测经典模型:Pixel-Anchor

文本检测是深度学习中一项非常重要的应用,在前面的文章中已经介绍过了很多文本检测的方法,包括CTPN(详见文章:大话文本检测经典模型CTPN)、SegLink(详见文章:大话文本检测经典模型Seg...

雪饼
今天
2
0
手把手教你写一个RPC

1.1 RPC 是什么 定义:RPC(Remote Procedure Call Protocol)——远程过程调用协议 ,RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC...

我最喜欢三大框架
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部