IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【Lombok】@Log | 如何优雅的进行日志记录 -> 正文阅读

[Java知识库]【Lombok】@Log | 如何优雅的进行日志记录

作者:recommend-item-box type_blog clearfix

一、简介

lombok v0.10中添加了各种@Log的变体。lombok 0.10中的新内容:你可以用log注解来注解任何类,让lombok生成一个logger字段。

logger被命名为log,字段的类型取决于你选择了哪一个logger

lombok v1.16.24中的新内容:增加了谷歌的FluentLogger(通过@Flogger)。

lombok v1.18.10中的新功能:增加了@CustomLog,让你可以通过配置如何用配置键来创建任何日志记录器。

您将@Log的变体放在类中(以适用于您使用的日志系统的为准);然后,您有一个静态的final log字段,按照您使用的日志框架通常规定的方式进行初始化,然后您可以使用它来编写日志语句。

有多种选择可供选择:

@CommonsLog

private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);

@Flogger

private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass();

@JBossLog

private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);

@Log

private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());

@Log4j

private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);

@Log4j2

private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);

@Slf4j

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

@XSlf4j

private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

@CustomLog

private static final com.foo.your.Logger log = com.foo.your.LoggerFactory.createYourLogger(LogExample.class);

这个选项要求你在lombok.config文件中添加一个配置,指定@CustomLog应该做什么。

例如:lombok.log.custom.declaration = com.foo.your.Logger com.foo.your.LoggerFactory.createYourLog(TYPE)(TOPIC) 这将产生上述语句。

首先是一个类型,即你的记录器的类型,然后是一个空格,然后是你的记录器工厂的类型,然后是一个点,然后是记录器工厂方法的名称,然后是1或2个参数定义;最多一个带有TOPIC的定义,最多一个没有TOPIC的定义。每个参数定义都以括号内的逗号分隔的参数种类列表的形式指定。这些选项是 TYPE(传递这个@Log装饰的类型,作为一个类),NAME(传递这个@Log装饰的类型的完全合格的名称),TOPIC(传递在@CustomLog注释上设置的明确选择的主题字符串),以及NULL(传递空)。

logger类型是可选的;如果省略,则使用logger工厂类型。(因此,如果logger类具有创建logger的静态方法,则可以缩短logger定义)。

@CustomLog的主要目的是支持你的内部私有日志框架。

默认情况下,logger的主题(或名称)将是用@Log注解的类的(名称)。这可以通过指定topic参数进行定制。例如: @XSlf4j(topic="reporting")

二、示例比较

1. Lombok 写法

import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;

@Log
public class LogExample {
  
  public static void main(String... args) {
    log.severe("Something's wrong here");
  }
}

@Slf4j
public class LogExampleOther {
  
  public static void main(String... args) {
    log.error("Something else is wrong here");
  }
}

@CommonsLog(topic="CounterLog")
public class LogExampleCategory {

  public static void main(String... args) {
    log.error("Calling the 'CounterLog' with a message");
  }
}

2. Java 标准写法


public class LogExample {
  private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
  
  public static void main(String... args) {
    log.severe("Something's wrong here");
  }
}

public class LogExampleOther {
  private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExampleOther.class);
  
  public static void main(String... args) {
    log.error("Something else is wrong here");
  }
}

public class LogExampleCategory {
  private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog("CounterLog");

  public static void main(String... args) {
    log.error("Calling the 'CounterLog' with a message");
  }
}

三、支持的配置项

lombok.log.fieldName = 一个标识符 (默认: log).
默认情况下,生成的记录器字段名为“log”,但您可以使用此设置将其更改为其他名称。

lombok.log.fieldIsStatic = [true | false] (默认: true)
通常情况下,生成的记录器是一个静态字段。通过设置此键为false,生成的字段将是一个实例字段。

lombok.log.custom.declaration = LoggerType LoggerFactoryType.loggerFactoryMethod(loggerFactoryMethodParams)(loggerFactoryMethodParams)
配置在使用@CustomLog时要生成什么。(斜体部分是可选的)。 loggerFactoryMethodParams是一个用逗号分隔的列表,可以传递0到任意数量的参数种类。有效的种类:TYPENAMETOPICNULL。你可以为没有设置明确主题的情况(不要在参数列表中包括TOPIC)和设置明确主题的情况(在列表中包括TOPIC参数)包含一个参数定义。

lombok.log.flagUsage = [warning | error] (默认: not set)
Lombok会将各种日志注释的任何使用标记为警告或错误(如果已配置)。

lombok.log.custom.flagUsage = [warning | error] (默认: not set)
如果配置了,Lombok会将任何对@lombok.CustomLog的使用标记为警告或错误。

lombok.log.apacheCommons.flagUsage = [warning | error] (默认: not set)
如果配置了,Lombok会将任何对@lombok.extern.apachecommons.CommonsLog的使用标记为警告或错误。

lombok.log.flogger.flagUsage = [warning | error] (默认: not set)
如果配置了,Lombok会将任何对@lombok.extern.flogger.Flogger的使用标记为警告或错误。

lombok.log.jbosslog.flagUsage = [warning | error] (默认: not set)
如果配置了,Lombok会将任何对@lombok.extern.jbosslog.JBossLog的使用标记为警告或错误。

lombok.log.javaUtilLogging.flagUsage = [warning | error] (默认: not set)
如果配置了,Lombok会将任何对@lombok.extern.java.Log的使用标记为警告或错误。

lombok.log.log4j.flagUsage = [warning | error] (默认: not set)
如果配置了,Lombok会将任何对@lombok.extern.log4j.Log4j的使用标记为警告或错误。

lombok.log.log4j2.flagUsage = [warning | error] (默认: not set)
如果配置了,Lombok会将任何对@lombok.extern.log4j.Log4j2的使用标记为警告或错误。

lombok.log.slf4j.flagUsage = [warning | error] (默认: not set)
如果配置了,Lombok会将任何对@lombok.extern.slf4j.Slf4j的使用标记为警告或错误。

lombok.log.xslf4j.flagUsage = [warning | error] (默认: not set)
如果配置了,Lombok会将任何对@lombok.extern.slf4j.XSlf4j的使用标记为警告或错误。

四、附属说明

如果一个名为log的字段已经存在,将发出警告,并且不会生成代码。

lombok的多样化日志注释的一个未来功能是找到对logger字段的调用,如果所选的日志框架支持它,并且日志级别可以在编译时从日志调用中确定,则用if语句来保护它。这样,如果日志语句最终被忽略,就可以完全避免对日志字符串的潜在大量的计算。这确实意味着你不应该在你的日志表达式中加入任何其他操作。

参考文献

【1】@Log (and friends) | Captain’s Log, stardate 24435.7: “What was that line again?”

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 15:50:19  更:2021-12-18 15:50:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:30:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码