sl4j或者log4j中,推荐的记录方式是:

 private Logger log = Logger.getLogger(getClass());
//或者
private static final Logger log = Logger.getLogger(XXX.class); //调用
log.debug();
log.info();

然后很多人就觉得不爽了,这特么这里声明一个log变量,那里声明一个log变量,多傻呀,于是就产生了下面的记录方式:

 LogHelper.debug();//或者LogUtil.debug()
LogHelper.info();

在这里,我不是针对谁,这么用的人,根本没有掌握log4x的意义所在!!!

日志记录解决方案#

阶段一##

最开始,是Console.Write,打印到控制台,看看内容是什么

阶段二##

console有两个弊端:

1)影响正常的输出——生产版本需要将这些打印代码去掉;

2)需要看的时候又一下刷过去了

于是变成文件记录

阶段三##

发现有些信息放在一起,总是从一大段无用的信息中去查找一些信息,于是产生了日志级别,根据不同的级别,记录到不同的地方

发现了Trace, Debug,Info, Warn, Error等级别。

阶段四##

发现调试信息特别多,记录起来没什么意义,要输出还影响程序性能。

但是有些问题,只能在生产环境下重现问题。

于是一种可以灵活控制日志输出的解决方案——log4x出现了。

log4x的用法#

可能很多人的用法仅限于,设置一个root的log配置

<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="rollingFile" />
</root>

但实际上,还有如下的方式

	<logger name="com.abc.www.LogTest" level="DEBUG" />
<logger name="com.abc.www" level="DEBUG" />
<logger name="com.abc" level="DEBUG" />

当有如下logger的实例时

package com.abc.www;
public class LogTest{
private Logger log = LoggerFactory.getLogger(getClass());
}

会优先寻找最匹配的logger配置

如果找到 name="com.abc.www.LogTest" 的logger配置,则使用该配置,否则往上找 name="com.abc.www" 的logger配置,一直到最终root配置。

这才是log4x的最好用的地方!!!

所以,下面这种用法是不是有问题?

//LogHelper中
private static Logger log = LoggerFactory.getLogger("myLogger"); //使用
LogHelper.debug();
LogHelper.info();

其它#

以前我也疑惑log4j的用法,为什么要这么用,为什么要定义这么多log变量。

希望看到这篇文章的朋友,不再疑惑。


微信,加好友,不用付款

求求别再这么用log4x了的更多相关文章

  1. 2年java,蚂蚁一面,卒

    其实我一个都没答上来.并不是因为我笨,是因为我不会.在大扰的帮助下,现在我会了,求求你再给我一个机会. TreeSet/HashSet 区别 顾名思义,首先是结构上的不同 1.TreeSet背后的结构 ...

  2. 面试被问烂的 Spring IOC(求求你别再问了)

    广义的 IOC IoC(Inversion of Control) 控制反转,即"不用打电话过来,我们会打给你". 两种实现: 依赖查找(DL)和依赖注入(DI). IOC 和 D ...

  3. 这道Java基础题真的有坑!我求求你,认真思考后再回答。

    本文目录 一.题是什么题? 二.阿里Java开发规范. 2.1 正例代码. 2.2 反例代码. 三.层层揭秘,为什么发生异常了呢? 3.1 第一层:异常信息解读. 3.2 第二层:抛出异常的条件解读. ...

  4. 求求你,下次面试别再问我什么是 Spring AOP 和代理了!

    https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9403056301388627935% ...

  5. 求求你们不要再用 RSA 私钥加密公钥解密了,这非常不安全!

    最近经常在网上看到有人说巨硬的 CNG(Cryptography Next Generation 即下一代加密技术) 只提供 RSA 公钥加密私钥解密,没有提供 RSA 私钥加密公钥解密,他们要自己封 ...

  6. 求求你,别再用wait和notify了!

    Condition 是 JDK 1.5 中提供的用来替代 wait 和 notify 的线程通讯方法,那么一定会有人问:为什么不能用 wait 和 notify 了? 哥们我用的好好的.老弟别着急,听 ...

  7. 求求你们了,别再写满屏的 if/ else 了!

    为什么我们写的代码都是 if-else? 程序员想必都经历过这样的场景:刚开始自己写的代码很简洁,逻辑清晰,函数精简,没有一个 if-else,可随着代码逻辑不断完善和业务的瞬息万变:比如需要对入参进 ...

  8. 求求你们,别再刷 Star 了!这跟“爱国”没关系!

    这几年,随着几大互联网公司的强大,纷纷投入云计算产业的建设,开源项目作为维护潜在客户群体(开发者)的重要手段,是各大云计算厂商都在努力做的事. 这几年也诞生了很多真正优秀和看似优秀的开源项目.真正优秀 ...

  9. Gym 101064 D Black Hills golden jewels 【二分套二分/给定一个序列,从序列中任意取两个数形成一个和,两个数不可相同,要求求出第k小的组合】

    D. Black Hills golden jewels time limit per test 2 seconds memory limit per test 256 megabytes input ...

随机推荐

  1. 手动启动Android模拟器

    1.5版本中加了个所谓的AVD(Android Virtual Device),AVD就相当于是一个模拟器的,不过你可以利用AVD创建基于不同版本的模拟器,然后使用emulator-avd avdNa ...

  2. HDU 2489 Minimal Ratio Tree 最小生成树+DFS

    Minimal Ratio Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  3. 将Web项目访问的URL项目名设置为"/"

    工具:Eclipse 步骤: 1.鼠标右键项目名--->properties--->Web Project Setting--->Context root. 将Context roo ...

  4. Big Data架构师技能图谱

    大数据通用处理平台 Spark Flink Hadoop 分布式存储 HDFS 资源调度 Yarn Mesos 机器学习工具 Mahout Spark Mlib TensorFlow (Google ...

  5. Eclipse perl的IDE环境插件-EPIC

    前提:1.安装好perl环境:ActivePerl(验证方法:cmd中输入 perl -v 看是否有反应~) 2.安装Eclipse 3.0以上版本 可选:安装PadWalker包,主要是全局变量跟踪 ...

  6. 16、手把手教你Extjs5(十六)Grid金额字段单位MVVM方式的选择

    这一节来完成Grid中的金额字段的金额单位的转换.转换旰使用MVVM特性,总体上和控制菜单的几种模式类似.首先在目录app/view/main/menu下建立文件Monetary.js,用于放金额单位 ...

  7. MapReduce 简单的全文搜索

    上一个已经实现了反向索引,那么为什么不尝试下全文搜索呢.例如有了 Hello     file3.txt:1; MapReduce     file3.txt:2;fil1.txt:1;fil2.tx ...

  8. PHPCMS快速建站系列之搜索功能

    默认模板的搜索功能代码 <div class="bd"> <form action="{APP_PATH}index.php" method= ...

  9. 手动调用NDK编译HelloWorld

    首先,你得有NDK(木有的自行搜索) /home/xxxx/tools/android-ndk-r12b 准备好你的HelloWorld程序源码: #include<stdio.h> in ...

  10. sql数据库中查询第几条到第几条的数据

    通用方法: select top 500 * from (select top 1000 * from UserSearchDatas order by ID) a order by ID desc ...