【原创】解决Kotlin无法使用@Slf4j注解的问题

news2024/12/23 6:00:48

前言

主要还是辟谣之前的网上的用法,当然也会给出最终的使用方法。这可是Kotlin,关Slf4j何事!?

辟谣内容:创建注解来解决这个问题

例如:

@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class Log {
    companion object {
        inline var <reified T> T.log: Logger
            get() = LoggerFactory.getLogger(T::class.java)
            set(value) {}
    }
}

为什么没用

然后我看了一下StackOverflow,结果这个方法的作者说:

也有人问为什么不能这么做,作者的回答是T.log:Logger方法会在全局加载使用,注解完全是多余的!!

我试了一下,果真如此哦……

其中@KLog就是代码里的@Log,然后我把@KLog去掉

毛线啊,啥事都没发生,果然如作者所说,这个注解完全是多余的……我也是蚌埠住了,难怪作者会说不要用这个方法了。

解决方法

这可是Kotlin,有扩展方法要什么注解?为什么非要局限于注解了?我不要不就完事了。

创建一个LogExtend.kt类

加入以下代码:

package 你的package地址

import org.slf4j.Logger
import org.slf4j.LoggerFactory

fun <T : Any> T.logger(): Logger {
    return LoggerFactory.getLogger(this.javaClass)
}

fun <T : Any> T.logError(e: Throwable) {
    logger().error("", e)
}

fun <T : Any> T.logError(msg: String) {
    logger().error(msg)
}

fun <T : Any> T.logInfo(msg:String) {
    logger().info(msg)
}

fun <T : Any> T.logDebug(msg:String) {
    logger().debug(msg)
}

使用方法:

直接调用logInfo即可,由于Kotlin支持字符串模板,log.info主要一个string入参的方法即可,其他方法实则都已经包括进去了。这些可太好了,连log.info的点都省去了(手动狗头)。

缺点当然也有,这就是所有的类都可以用logInfo这个方法了,但是这个问题确实也没法解决啊。

实现效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS基础入门02

目录 1.复合选择器 1.1后代选择器 1.2子选择器 1.3并集选择器 1.4伪类选择器 2.字体属性 2.1设置字体 2.2大小 2.3粗细 2.4文字样式 3.文本属性 3.1文本颜色 3.2设置文本颜色 3.3文本对齐 3.4文本装饰 3.5文本缩进 3.6行高 4.背景属性 4.1背景颜色 4.2背景图…

掌握TikTok时代:MCN的自媒体革命

随着数字时代的到来&#xff0c;媒体和内容创作的格局发生了翻天覆地的变化。社交媒体平台如今是塑造品牌形象、建立个人品牌以及传播信息的关键场所。 在这一领域&#xff0c;TikTok的崛起无疑引领了自媒体革命的浪潮。而多频道网络&#xff08;MCN&#xff09;也发挥着越来越…

IntelliJ IDEA 2023.2正式发布,新UI和Profiler转正

你好&#xff0c;我是YourBatman&#xff1a;做爱做之事❣交配交之人。 &#x1f4da;前言 北京时间2023年7月26日&#xff0c;IntelliJ IDEA 2023.2正式发布。老规矩&#xff0c;吃肉之前&#xff0c;可以先把这几碗汤干了&#xff0c;更有助于消化&#xff08;每篇都很顶哦…

ubuntu双系统安装以及启动时卡死解决办法

目录 一.简介 二.安装 如何安装Ubuntu20.04(详细图文教程-CSDN博客 Ubuntu22.04&#xff08;非虚拟机&#xff09;安装教程&#xff08;2023最新最详细&#xff09;-CSDN博客 三.ubuntu双系统启动时卡死解决办法&#xff08;在ubuntu16.04和18.04测试无误&#xff09; 问题…

程序员节“致敬经典”| Springer Nature高影响力图书合集:专业与应用计算、计算机科学、智能技术与机器人学

​ 每年的10月24日是“程序员节”&#xff0c;节日设立的初衷是为感谢程序员为世界变革带来的无尽可能性和创造力。每位程序员像是一个1024&#xff0c;以最低调但核心的功能模块筑起科技世界。 值此之际Springer Nature致敬经典&#xff0c;特别精选专业与应用计算、计算机科学…

CSS 的盒子Day03(2)

在Web 开发中&#xff0c; CSS 盒子模型是指如何在浏览器引擎中对 HTML 元素进行建模和如何从CSS属性导出 HTML 元素的尺寸。 [3]盒模型的指导方针由 Web 标准万维网联盟 (W3C)特别是 CSS 工作组描述。在 20 世纪 90 年代末和 2000 年代初的多数时间里&#xff0c;主流浏览器中…

如何部署和配置IPv6

环境&#xff1a; IPv6 问题描述&#xff1a; 如何部署和配置IPv6 解决方案&#xff1a; 要了解 IPv6&#xff0c;首先需要了解 IPv4&#xff0c;因为 IPv6 是 IPv4 的升级版本。IPv4 是互联网上最常见的 IP 地址协议&#xff0c;它使用 32 位地址&#xff0c;可以表示大约…

[yolo系列:YOLOV7改进-添加CoordConv,SAConv.]

文章目录 概要CoordConvSAConv 概要 CoordConv&#xff08;Coordinate Convolution&#xff09;和SAConv&#xff08;Spatial Attention Convolution&#xff09;是两种用于神经网络中的特殊卷积操作&#xff0c;用于处理图像数据或其他多维数据。以下是它们的简要介绍&#x…

【小余送书活动第四期】《Kali Linux高级渗透测试》,不可多的的网安书籍哦!网络安全的朋友抓紧参与活动领书咯!

目录 1.背景介绍 2.读者对象 3.随书资源 4.本书目录 5.本书概览 6.活动参与方式 1.背景介绍 对于企业网络安全建设工作的质量保障&#xff0c;业界普遍遵循PDCA&#xff08;计划&#xff08;Plan&#xff09;、实施&#xff08;Do&#xff09;、检查&#xff08;Check&…

CUDA学习笔记(十一)Memory Access

转载于https://www.cnblogs.com/1024incn/tag/CUDA/ Memory Access Patterns 大部分device一开始从global Memory获取数据&#xff0c;而且&#xff0c;大部分GPU应用表现会被带宽限制。因此最大化应用对global Memory带宽的使用时获取高性能的第一步。也就是说&#xff0c;gl…

vsCode 格式化配置

学习目标&#xff1a; 基于 vsCode 配置格式化工具&#xff0c;提高&#xff08;React、Vue &#xff09;开发效率  1. vsCode 安装 prettier 插件并启用  2. 修改配置文件 setting.json setting.json 位置&#xff1a; 依次点击 替换内容&#xff1a;↓ {"git.enab…

强化学习代码实战(2) --- 多臂赌博机

目录 前言 1.Python基础 2.Numpy基础 3.多臂赌博机 参考文献 前言 本文内容来自于南京大学郭宪老师在博文视点学院录制的视频&#xff0c;课程仅9元地址&#xff0c;配套书籍为深入浅出强化学习 编程实战 郭宪地址。 1.Python基础 1. print() 可以用该语句查看当前数据的情…

使用线程时,有哪三种常见的线程安全问题

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 今天我们学习 3 类线程安全问题。 什么是线程安全 要想弄清楚有哪 3 类线程安全问题&#xff0c;首先需要了解什么是线程安全&#xff0c;线程安全经常在工作中被提到&#xff0c;比如&#xff1a;你的对象不是线程…

程序员必备网站,别说话直接收藏!

俗话说的好&#xff0c;一个程序员&#xff0c;20%靠知识储备&#xff0c;80%靠网络搜索。打开代码&#xff0c;打开Google&#xff0c;开始工作。 那么常用的写码软件&#xff0c;你知道几个呢&#xff1f;下面我们来一起看一下常用的写码软件吧~建议收藏本文&#xff0c;保证…

docsify搭建个人博客——简单公共知识库

整站建设流程&#xff1a;安装docsify > 排错>配置封面> 配搜索> 启动> 放md类的文章> 自动生成目录&#xff1b; 更新文章流程&#xff1a; 把目录文章放到docsify\docs目录下&#xff0c;然后双击docsify-autosidebar.exe即可&#xff08;它会重新生成目录…

2023版 STM32实战11 SPI总线读写W25Q

SPI全称 英文全称&#xff1a;Serial peripheral Interface 串行外设接口 SPI特点 -1- 串行(逐bit传输) -2- 同步(共用时钟线) -3- 全双工(收发可同时进行) -4- 通信只能由主机发起(一主,多从机) 开发使用习惯和理解 -1- CS片选一般配置为软件控制 -2- 片选低电平有效,从…

JAVA入门总结回顾

1.常用的DOS命令&#xff1a;DOS窗口常用命令-CSDN博客 2.检查jdk是否安装成功&#xff1a;在cmd中输入java -version或者java或者javac。出现相应的对应显示内容。 3.JDK&#xff0c;JRE之间的关系&#xff1a;JDK是JAVA的开发工具包&#xff0c;JRE是JAVA的的运行环境。JRE…

第二证券:指数是什么意思?

跟着经济全球化的加速和商场化进程的深化&#xff0c;指数已成为金融商场重要的风向标和抉择方案参看。指数是依据商场上必定数量的标的股票价格改变而核算的数值&#xff0c;代表了特定股票商场的全体涨跌状况。本文将从多个视点剖析指数的意义和作用。 一、指数的品种和核算…

k8s部署xxl-job后,执行任务提示拒绝连接Connection Refused

一、问题背景 1.1 问题说明 之前由于网络插件flannel安装不成功&#xff0c;导致xxl-job执行任务的时候&#xff0c;提示拒绝服务&#xff0c;如下图所示&#xff1a; 但是安装flannel安装成功后&#xff0c;依然无法联通&#xff0c;还是提示相同问题 1.2 排查网络 通过i…

短视频矩阵系统搭建/源头----源码

一、智能剪辑、矩阵分发、无人直播、爆款文案于一体独立应用开发 抖去推----主要针对本地生活的----移动端(小程序软件系统&#xff0c;目前是全国源头独立开发)&#xff0c;开发功能大拆解分享&#xff0c;功能大拆解&#xff1a; 7大模型剪辑法&#xff08;数学阶乘&#xff…