`

Log API 性能总结

 
阅读更多
Log的三种写法:

1. LOGGER.info(String.format("aaaaaa%sbbbbbb%sccccc%sdddddd%s", "11", "22", "33", "44"));
2. LOGGER.info("aaa{}", "bb");
3. LOGGER.info("aaaaaa"+"1111"+"bbbbbb"+"2222"+"ccccc"+"33333"+"dddddd"+"44444");

1. 第一种的底层实现:要执行String.format方法,有2个for循环来解析%s

2. 第二种的底层实现:
public void info(String format, Object arg) {
    if (logger.isInfoEnabled()) {
        FormattingTuple ft = MessageFormatter.format(format, arg);
        logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable());
    }
}

3. 第三种的底层实现:先拼接字符串,然后在调用ogger.log(FQCN, Level.INFO, msg, null);


性能比较:
第一种性能最差,因为需要调用String.format方法做2次for循环(有parse方法要遍历String.length次)

第二种和第三中性能各有千秋:
1)第二种:当当前Log级别为大于等于info的时候
他要调用MessageFormatter.format,性能上略低于字符串+的拼接
2)第三种:如果当前log级别为error, 这时候第二种性能更好
因为先执行logger.isInfoEnabled(),返回为false之后,则不用做字符串的拼接


[160127 19:50:12,398:com.rcloud.msgLog.LogMsgManager.setLog(LogMsgManager.java:44)] [INFO] [SandBox-akka.actor.default-dispatcher-20] | {"appId":"pkfcgjstfdnb8","fromUserId":"tt_10000","targetId":"9","targetType":4,"GroupId":"9","classname":"RC:TxtMsg","content":{"content": "[\u6570\u636e]", "extra": "wqdsw6VoXETCgFDDusKSwpfDnsOHM1bCtwjDvSnDiirDpsO/I8K0Wlthb8KebsK9McK4PjFNdFcEw63DmxVMBBPDjhTDicO+fXnDh8KMw7DDtcO8cwPCpWnDq8KlwoDDgw5Sf07Cv8K5w6YbGCoMw4QsN8OpbsKUwp3CmlNmw4PClMODwoDDgcKZTyhww7XDvi/CiMOdT8K/wqvDgSDCuMOgw57Cl8OWaWnCqMKBHsKgDXjDqyzCtmbDp8O0J8KsJArCnWXDmsK4wqrClsORwrRsw7gRGmR5wqcPa8O+a8KeVllJYcKKwqNQw77CphI="},"dateTime":"2016-01-27 19:50:12.397","msgUID":"5985-QRAL-KG00-001P"}

分享到:
评论

相关推荐

    LogApi

    总结起来,"LogApi"是一个定制化的日志接口,为C#开发者提供了强大的日志记录能力。通过理解和熟练使用"LogApi",我们可以更有效地监控和管理应用程序,提高软件质量和可维护性。在"LogApi-main"这个项目中,开发者...

    log4j_API帮助文档

    **Log4j API 帮助文档** Log4j 是一个广泛使用的 Java 日志框架,由 Apache 软件基金会开发。它为开发者提供了一种灵活、高效且可扩展的日志记录工具,允许他们控制日志信息的输出级别、格式以及目的地。在Java应用...

    slf4j-api-1.6.1和slf4j-log4j12-1.6.1和log4j-1.2.16包

    1.2.16是Log4j的一个稳定版本,包含了bug修复和性能优化。通过slf4j-log4j12桥接器,Log4j可以作为SLF4J的后端日志实现。 **使用场景和配置** 在Java项目中,你通常会在类路径下包含这三个JAR文件:`slf4j-api-...

    Log4j总结

    总结,Log4j作为一个成熟的日志框架,其强大的功能和广泛的社区支持使其在Java开发领域有着不可替代的地位。掌握Log4j的使用和配置,能有效提升开发效率,同时也有助于提高系统的可维护性和稳定性。通过深入学习其...

    java 中log4j包总结的各个版本

    - Log4j 2提供了更好的性能和可扩展性,支持更多插件,并引入了新的API(如LoggerContext和Configuration)。 总结来说,Log4j-1.2.4是Log4j的一个经典版本,虽然功能可能没有最新版本强大,但在许多项目中仍然被...

    cpp-spdlog超级快速C日志库

    总结,`spdlog`是C++开发中的强大日志库,它的高效性能、易用性和灵活性使其成为许多项目首选的日志解决方案。通过深入理解其API和特性,开发者可以更好地利用`spdlog`来优化他们的日志记录系统。在实际项目中,结合...

    apache-log4j-2.3-bin和commons-logging-1.2

    总结来说,Apache Log4j 2.3 和 Commons Logging 1.2 在Java Web开发中扮演着重要角色,它们帮助开发者方便地记录、管理和分析应用程序的日志,提升开发效率和问题排查能力。这两个库的结合使用,能够实现日志系统的...

    log4j_api 英文

    API(Application Programming Interface)是Log4j的核心部分,它定义了各种类和接口,使得开发者能够方便地在代码中插入日志语句,以追踪程序运行状态、调试问题或收集性能数据。 ### 1. 日志级别 Log4j支持多个...

    log4j(二):动态配置日志输出路径

    总结来说,Log4j的动态配置日志输出路径主要涉及对配置文件的解析和重新加载,以及在运行时使用API直接调整日志设置。理解并熟练运用这些方法,可以帮助我们在开发过程中更灵活地管理和监控日志,提高开发效率和问题...

    g3log 日志管理

    总结来说,g3log是一个强大且可靠的日志管理系统,尤其适合需要高性能和稳定性的C++项目。尽管其接口可能需要适应,但通过适当的封装和配置,可以将其转化为非常适合项目需求的解决方案。无论是开发还是维护阶段,g3...

    log4net的配置详解

    log4net是基于.NET的 logging API,它允许开发者定义多种日志输出级别(如DEBUG、INFO、WARN、ERROR、FATAL),并且可以将日志输出到不同的目标,如控制台、文件、数据库等。log4net的核心概念包括Appender、Layout...

    log4j2.17.2

    Log4j作为Java平台广泛使用的日志记录框架,其性能高效、功能强大,深受开发者的青睐。然而,随着技术的发展,安全问题也日益凸显,特别是2021年底爆出的Log4j2远程代码执行(RCE)漏洞,引发了全球范围内的广泛关注...

    slf4j-api-1.7.12.jar slf4j-log4j12-1.7.12.jar

    SLF4J(Simple Logging Facade for...`slf4j-api-1.7.12.jar`和`slf4j-log4j12-1.7.12.jar`分别是SLF4J API和SLF4J到Log4j的绑定,它们共同工作,使开发者能够利用Log4j的强大功能,同时保持代码与具体日志系统的分离。

    log4j-2.11.1.jar

    总结起来,Apache Log4j 2.11.1 作为Java日志框架的重要版本,提供了一整套强大、灵活的日志解决方案,包括丰富的配置选项、高效的性能以及安全特性。对于开发者来说,熟练掌握和利用Log4j 可以极大地提升日志管理的...

    log4j-1.2.15.jar

    5. **性能优化**:Log4j 1.2.15针对性能进行了优化,尤其是在高并发环境下的表现,降低了日志处理的开销。 三、使用Log4j 1.2.15.jar 1. **引入依赖**:在项目中添加Log4j 1.2.15.jar依赖,可以手动下载放入类路径...

    slf4j1.5和1.6版本架包包括api和log4j

    总结来说,SLF4J是日志抽象层,提供了一致的接口,而`slf4j-log4j12`则是将SLF4J与Log4j集成的绑定,允许你在使用SLF4J接口的同时享受到Log4j的功能。通过SLF4J,开发者可以编写与日志实现无关的代码,提高了代码的...

    log4j相关jar包

    总结来说,"log4j相关jar包"包含了多种日志解决方案,旨在提供灵活、高效的日志记录服务。SLF4J作为抽象层,提高了日志系统的可移植性;log4j2作为log4j的升级版,提升了性能和功能;桥接包则确保了不同日志框架间的...

    accessLog.rar

    通过Spark对"accessLog.rar"中的"log.log"文件进行分析,我们可以深入了解用户行为、系统性能,为故障排查、优化决策提供依据。Spark的强大在于其灵活的API和高效的执行模型,使得日志分析变得简单而高效。实践中,...

    log4j-1.2.16下载

    Log4j是一个基于Java的日志API,它的设计目标是提供一个灵活且高效的日志记录系统,支持多种输出格式,如控制台、文件、数据库等。Log4j的主要优点在于其可配置性,允许开发者根据需要调整日志级别、输出格式和存储...

    log4j-1.2.17.jar下载

    总结,Log4j-1.2.17.jar作为一款强大的日志工具,通过灵活的配置和丰富的API,为Java开发者提供了强大的日志管理能力。正确理解和运用Log4j,能有效提升开发效率,便于问题排查,是每个Java程序员必备的技能之一。

Global site tag (gtag.js) - Google Analytics