美文网首页
日志使用占位符还是直接拼接

日志使用占位符还是直接拼接

作者: Aries_Li | 来源:发表于2020-10-21 23:44 被阅读0次

在开发和生产环境,我们经常依赖log来帮我们定位问题,这时候会使用不用的log级别,debug,info,warn,error等。今天在和同事讨论的过程中,聊到了日志占位符的问题。
以及使用占位符的优点,然后自己简单做了一下性能测试,加深了对占位符的理解。

占位符和直接拼接的性能比较

通过main方法for循环测试占位符和直接拼接10w次以后的用时,发现直接性能拼接的耗时较短;那么这样可以得到一个简单的结论,拼接耗时短,性能表面上看要比占位符性能高。
既然这样的话,我们为什么不直接使用拼接,反而越来越多的框架选择使用了占位符。

从实际出发

回到项目,一般项目里面有很多debug级别的日志,可以帮助我们快速定位线上问题,提交生产解决问题的效率,但是一般线上的日志级别会比较高,debug是不会打印的,这个时候就出现了一个问题,拼接的时候会进行内存空间的开辟,stringbuilder进行拼接,但是进入日志断点后,发现并不需要进行日志打印,这部分的开销就变的没有意义,而使用占位符的时候,只有需要打印的时候才会进行拼接,减少了内存的开销,性能得到了提升。

最后

使用占位符是一个最佳实践,当然我觉得还是要根据实际的情况,如果确定100%需要进行日志打印,而且日志级别较高,我觉得直接拼接是更好的选择,不过如果公司有规范的话,还是按照规范来执行。

相关文章

  • 日志使用占位符还是直接拼接

    在开发和生产环境,我们经常依赖log来帮我们定位问题,这时候会使用不用的log级别,debug,info,warn...

  • Mybatis(二)

    parameterType(输入类型) 传递简单类型 使用#{}占位符,或者${}进行sql拼接 传递pojo对象...

  • 深度解析Mybatis中#{}与${}的区别

    Q:#与$的区别是什么?A:#会在sql中使用占位符,有效得防止了sql注入,$会把参数直接拼接到sql中可能会引...

  • mybatis占位符使用错误导致mysql隐式转换造成的索引失效

    记录一次mybatis占位符使用错误的问题:mapper.xml 的正确使用#{}, 会在查询时拼接' ', 保证...

  • sql语句拼接

    1.拼接字段 2.拼接占位符 3.拼接sql 4.全语句拼接 5.来吧展示

  • 2018-08-08 - Lisa’s Code Standar

    一、字符串 1.1、字符串一定要放在strings.xml里面,不要直接用 1.2、字符串占位符的使用:占位符使用...

  • Glide4 使用

    基本使用Glide.with(this).load(url).into(imageView); 使用占位符占位符是...

  • Mybatis常见使用总结

    Mapper中#{}和${}的区别 #{}采用的是占位符进行拼接sql语句,${}直接显式的显式字符串#{}会尽可...

  • 莹莹

    占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符...

  • 莹莹

    占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符...

网友评论

      本文标题:日志使用占位符还是直接拼接

      本文链接:https://www.haomeiwen.com/subject/kziymktx.html