本文主要是介绍如何正确使用log4j,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载自: http://blog.sina.com.cn/s/blog_616b57310100f36s.html
Java Web开发的过程中,通过会采用输出log的方式来进行调试,产品上线之后,也通常使用log来记录系统的运行状态。最简单的输出log的方式就是使用System.out.println(String msg)和System.err.println(String msg),然而这种方式的弊端是显而易见的,例如:
1. 调试期输出log的代码,在上线运行前需要注释掉,否则可能会影响系统性能或者造成日志文件过于庞大。当出现问题需要跟踪的时候,又需要修改代码,删除注释符以打开这些debug的log,非常不方便;
2. 所有的业务的log都会输出到一个文件中去,查看起来很不方便。
- 1. 获取Logger实例的方法:
protected static final Logger logger = Logger.getLogger("logger_name");
或
private static final Logger logger = Logger.getLogger("logger_name");
还有一个获取Logger的方法:
Logger.getLogger(Class clazz);
1.1 为什么要加“static”?
1.2 为什么要加“final”
1.3 Logger.getLogger(String loggerName)与Logger.getLogger(Class clazz)有什么区别?
1.4 log4j配置文件中没有配置logger_name对应的logger怎么办?
-
2. Logger共有6个log级别,按优先级由低到高排序分别是:
- 3. 输出log的正确方式:
3.1 为什么要加上logger.isInfoEnabled()?
3.2 ERROR及其以上级别的log信息是一定会被输出的,所以只有logger.isDebugEnabled和logger.isInfoEnabled方法,而没有logger.isErrorEnabled方法。
- 4. debug、info、error等输出log的方法是线程安全的,请放心使用。
- 5. log有风险,输出需谨慎!由于输出log过程需要进行磁盘操作,且log4j为了保证log输出过程的线程安全性而使用同步锁,就使得输出log成为很耗时的操作,所以log信息一定要言简意赅,不要输出一些无用的log。
这篇关于如何正确使用log4j的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!