最近在项目中,常有意无意的看到这样的代码
if(log.isDebugEnabled()){ log.debug("msg"); }
虽然从方法的命名规则大概知道是什么意思,但不知为什么要这样写?
通过百度搜索,大概理解这样写为提高代码的效率,这样写为什么能提高效率呢?
原因在于log日志具有以下5种正常级别
org.apache.log4j.Level类提供以下级别,但也可以通过Level类的子类自定义级别。 Level 描述 ALL 各级包括自定义级别 DEBUG 指定细粒度信息事件是最有用的应用程序调试 ERROR 错误事件可能仍然允许应用程序继续运行 FATAL 指定非常严重的错误事件,这可能导致应用程序中止 INFO 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息 OFF 这是最高等级,为了关闭日志记录 TRACE 指定细粒度比DEBUG更低的信息事件 WARN 指定具有潜在危害的情况
优先级关系:
分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG
当在log4j.properties种设置:log4j.rootLogger=info,stdout
if(log.isDebugEnabled()){//此条件为假,if的语句体不执行,可以有选择的执行打印日志,从而提高了代码执行效率 log.debug("msg"); }
示例:
public class TestLog { public static final Logger log = LoggerFactory.getLogger(TestLog.class); public static void main(String[] args) { //int count = 0; log.info("-------begin----"); if(log.isDebugEnabled()){ log.debug("debug"); } log.info("-------end------"); } }
当设置:log4j.rootLogger=debug,stdout时输出结果:
2017-07-31 22:12:49,856-5p TestLog - -------begin---- 2017-07-31 22:12:49,871-5p TestLog - debug 2017-07-31 22:12:49,871-5p TestLog - -------end------
当设置:log4j.rootLogger= info,stdout时输出结果:
2017-07-31 22:28:08,555-5p TestLog - -------begin---- 2017-07-31 22:28:08,558-5p TestLog - -------end------
使用{}写法也可以到达效果:
public static void main(String[] args) { //int count = 0; log.info("-------begin----"); //if(log.isDebugEnabled()){ // log.debug("debug"); //} log.debug("debug{}"); log.info("-------end------"); }
输出结果一样,大家可以动手尝试下,书写代码百遍,其义自现。
相关推荐
针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...
apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-...
若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载
Apache log4j2零日漏洞,根据 log4j-2.15.0-rc2 版本编译生成log4j-api-2.15.0.jar 1.解压你的jar jar xvf XXX.jar 2. 删除旧版本jar cd ./BOOT-INF/lib rm -rf log4j-api-*.jar 3. 上传新版本log4j-api-2.15.0....
Log4j 是一个日志记录框架,Log4j 2 是对 Log4j 的升级,提供了重大改进,超越其前身 Log4j 1.x,并提供...Log4j 团队已获悉一个安全漏洞 CVE-2021-45105,该漏洞已在 Java 8 及更高版本的 Log4j 2.17.0 中得到解决。
log4j中配置日志文件相对路径方法分析 方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 其中“${...
Apache log4j2零日漏洞,根据 log4j-2.15.0-rc2 版本编译生成log4j-api-2.15.0.jar 1.解压你的jar jar xvf XXX.jar 2. 删除旧版本jar cd ./BOOT-INF/lib rm -rf log4j-api-*.jar 3. 上传新版本log4j-api-...
apache下载太慢,特搬到国内下载。修复log4j漏洞log4j2下载最新log4j2.16.0下载
下面小编就为大家带来老生常谈Log4j和Log4j2的区别(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
描述Log4j2的配置详情及相对Log4j的优点,包括效率测试程序
赠送jar包:log4j-api-2.12.1.jar; 赠送原API文档:log4j-api-2.12.1-javadoc.jar; 赠送源代码:log4j-api-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-api-2.12.1.pom; 包含翻译后的API文档:log4j-api-...
log4j.rootLogger=debug,CONSOLE,testfile,A1,MAIL ################### # Console Appender ################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=...
赠送jar包:log4j-api-2.17.1.jar; 赠送原API文档:log4j-api-2.17.1-javadoc.jar; 赠送源代码:log4j-api-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-api-2.17.1.pom; 包含翻译后的API文档:log4j-api-...
log4j-api-2.12.4.jar和log4j-core-2.12.4.jar,该版本避免log4j漏洞问题。
log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码,
log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn". 系统选择配置文件的优先级(从先到后)如下: (1).classpath下的名为log4j2-test.json...
log4j中文手册 下载后解压即可。 pdf方便使用,放心下载。
Log4j2学习笔记,引入log4j2的依赖-log4j2.xml配置模板-application.properties文件配置-使用
log4j-API-最新稳定版本log4j-1.2.17 apache log4j-API-最新稳定版本log4j-1.2.17
赠送jar包:log4j-slf4j-impl-2.12.1.jar; 赠送原API文档:log4j-slf4j-impl-2.12.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.12.1.pom; ...