开发者社区> 问答> 正文

为什么声明日志工具对象Logger应声明为private static final?

为什么声明日志工具对象Logger应声明为private static final?

展开
收起
夹心789 2024-06-27 12:00:10 125 0
1 条回答
写回答
取消 提交回答
  • "1.声明为private防止logger对象被其他类非法使用。
    2.声明为static是为了防止重复new出logger对象;防止logger被序列化,导致出现安全风险;处于资源考虑,logger的构造方法参数是Class,决定了logger是根据类的结构来进行区分日志,所以一个类只要一个logger,故static。
    3.声明为final是因为在类的生命周期无需变更logger,避免程序运行期对logger进行修改。

    为什么对于 trace/debug/info 级别的日志输出,必须进行日志级别的开关判断?
    如果配置的日志级别是warn的话,上述日志不会打印,但是会执行字符串拼接操作,如果name是对象, 还会执行toString()方法,浪费了系统资源,执行了上述操作,最终日志却没有打印,因此建议加日志开关判断。正例: 在trace、debug、info级别日志打印前加上对应级别的日志开关判断,通常可以将开关判断逻辑包装在日志工具类中,统一实现。"

    2024-06-27 13:20:50
    赞同 2 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载