Java 【基础】 模拟log4j,输出当前语句的行数,和类路径

2023-11-13

一直很好奇log4j 是如何获取到当前输出的行数的,今天学到了,原来是堆栈跟踪,把代码贴出来给大家看一下。

    //模拟log4j
    public static void debug(String string){
        System.out.println("【调试】"+getStackTrace()[getStackTrace().length-1]+"\n"+string);
    }

    //获取当前调用此函数的所在的堆栈跟踪信息
    public static StackTraceElement[] getStackTrace(){
        StackTraceElement element[]=Thread.currentThread().getStackTrace();
        return  element;
    }

    //获取当前调用此函数的所在行数
    public static String getNowLine(){
        StackTraceElement element[]=Thread.currentThread().getStackTrace();
        String info[]= element[element.length-1].toString().split("\\.");
        return  info[info.length-1].replaceAll("[^\\d*]","");
    }

测试如下:注意这里文章的行数不是真的行数,具体为你代码里面的行数为准

    public static void main(String[] args) {
		//一般当前的类路径,和行数信息都在getStackTrace()数组的最后一个值。
        System.out.println("当前类路径:"+getStackTrace()[getStackTrace().length-1]);

        System.out.println("当前行数:"+getNowLine());

        debug("模拟log4j");
    }

输出如下:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 【基础】 模拟log4j,输出当前语句的行数,和类路径 的相关文章

  • 如何为流数据创建 Flux/Publisher

    我正在使用轮询方法定期获取数据 新数据可能随时到达 我想向我的客户公开一个反应式接口 因此 我想创建一个发布者 Flux 它会在新数据可用时发布新数据并通知订阅者 我怎么做 我看到的所有 Flux 示例都是针对数据已知 可用的情况 实际上
  • java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;I)V 通过 Java 使用 IE 和 Selenium

    我正在尝试将 selenium 与 sikuli 一起使用 所以 sikuli 不会使用当前的 java 设置在 64 位上运行 因此在我的项目中将运行时更改为指向 32 位运行时环境 并使用 32 位 iewebdriver 添加我的 s
  • 在自动触发的默认侦听器之前触发 Hibernate 自定义事件侦听器

    我创建了一个自定义 Hibernate 事件监听器 扩展了 org hibernate event PreInsertEventListener 自定义侦听器会重写 onPreInsert 方法 并在使用 DAO 将 联系人 实体保存到数据
  • 如何在android中动态添加项目到listview

    有谁能够帮助我 我正在尝试在 Android 中创建一个 ListView 并且我正在尝试使用代码 不使用 XML 将项目加载到其中 这是我到目前为止的代码 tweetList ListView this findViewById R id
  • C++ 中的模块路径到 Java JNI 调用

    当我用 C 创建 Java 8 JVM 时 我通常使用类似以下代码的内容来告诉 JVM 类路径 JavaVMOption options new JavaVMOption 1 JVM invocation options options 0
  • java列表中的addAll方法

    我一直在研究java中的addAll方法 但这让我感到奇怪 到底有什么区别public void addAll List
  • 如何在MongoDb中保存Timestamp类型值 |爪哇

    从 Java 驱动程序中 我想在 MongoDb 中保存一个类似于下面 json 的文档 ts Timestamp 1421006159 4 我尝试过的选项 选项1 映射 doc new HashMap 1 doc put ts new B
  • Java 8 Arraylist 巨大容量(int) 实现

    我正在阅读文档了解如何ArrayListJava 中的 s 已增长 我不明白为什么hugeCapacity int minCapacity http grepcode com file repository grepcode com jav
  • 原生状态栏

    有没有办法创建nativeSWT 中的状态栏与 Windows 应用程序中的状态栏类似 我见过使用标签模拟的状态栏 但我对真正的解决方案更感兴趣 org eclipse jface action StatusLineManager crea
  • 从 Android Intent 打开图库应用

    我正在寻找一种打开方式Android来自意图的画廊应用程序 我不想返回图片 而是只是打开图库以允许用户使用它 就像他们从启动器中选择它一样 View pictures folders 我尝试执行以下操作 Intent intent new
  • 能够存储微秒的 Date 对象

    我正在寻找一个能够存储到微秒粒度的 Date 对象 有人知道吗 标准Date对象仅存储到毫秒 我知道这是平台限制 我可以通过包装来解决这个问题Date加上自定义类别中的小数数量 然而 我希望避免编写一个带有适当计算等的内容 我需要解析一个b
  • API 与 SonarQube 5.6 和 Java Analyzer 4.0 与 Findbugs 3.3 或 Cobertura 1.6.3 不兼容

    SonarQube 对我的项目的分析失败了5 6 更新后Java插件从版本3 14 to 4 0 在我的 SonarQube 实例中 除了其他插件之外 我目前还有 Findbugs 插件 版本3 3 和 Cobertura 插件 1 6 3
  • 如何在另一个 Gui 中启动 JADE Gui?

    如何在另一个 Gui 中启动 JADE Gui 假设我的 Gui 上有一个按钮 点击该按钮后 JADE Gui 将启动 这可能吗 如果是 怎么办 提前致谢 Regards 我假设 JADE Gui 你指的是 JADERMA http jad
  • while 循环无法访问代码

    当我编译这段代码时 public static void main String args int x 0 while false System out println hello 它显示编译时错误无法访问代码 但是当我将这段代码修改为 p
  • 封闭实例的匿名类

    我正在阅读 Joshua Bloch 的 Effective Java 第二版 目前我在第 22 项 它描述了内部类和嵌套类 但我无法理解他这句话的意思 匿名类具有封闭实例当且仅当它们发生时 在非静态上下文中 有人能给我一个代码示例并解释它
  • Android 回调监听器 - 将 SDK 中的 pojo 的值发送到应用程序的 Activity

    我有一个深埋在 SDK 中的 java 类 它执行一个操作并返回一个布尔值 它不知道应用程序的主要活动 但我需要主要活动来接收该布尔值 我见过很多关于回调 广播和监听器的问题 但他们似乎都了解该活动 我的 pojo 确实有一个 Activi
  • 使用 Wildfly 在 Jersey 上使用 @PersistenceUnit 注入 EntityManagerFactory

    我尝试使用 PersistenceUnit 注入 EntityManagerFactory 但它始终为空 我认为我的 persistence xml 没问题 因为我可以使用以下代码获取 EntityManager EntityManager
  • lwjgl 3 , glUniformMatrix4 导致 jre 崩溃

    我正在使用 lwjgl 3 并学习现代 opengl 3 我想将统一矩阵发送到顶点着色器 以便我可以应用转换 我尝试过 但程序因此错误而崩溃 A fatal error has been detected by the Java Runti
  • Java 中的 ConcurrentHashMap 和 Hashtable [重复]

    这个问题在这里已经有答案了 Java 中的 ConcurrentHashMap 和 Hashtable 有什么区别 哪个对于线程应用程序更有效 ConcurrentHashMap 和 Hashtable 锁定机制 Hashtable属于Co
  • 覆盖 VK_Tab 焦点操作

    再会 我正在向 jTextField 添加 keyevent 侦听器 以便如果用户按下 Tab 键 插入符号位置将转到 jtextField 内文本的末尾 这是我的代码 private void jTextField1KeyPressed

随机推荐

  • 远程链接腾讯云Redis-遇到的坑

    开门见山 1 配置腾讯安全组 不用重启机器 首先找到默认的安全组 一个实例必须有一个安全组 即这个 点进去 就会进入安全组下全部的安全策略 根据需要配置 2 更改Redis配置redis conf 注意 1 一定找到启动Redis对应的re
  • C++ STL模板库用法查询及一些常见面试题(自用)

    C STL模板库 文章目录 C STL模板库 用法查询 Array 1 使用 2 创建 3 成员函数 Vector 1 使用 2 创建 3 成员函数 deque 1 使用 2 创建 3 成员函数 list 1 使用 2 创建 3 成员函数
  • 「如何优雅有效利用周末和下班时间?」

    文章目录 每日一句正能量 前言 下班的时间规划 周末的时间规划 提升周末体验感的好方法 怎样才能获得充分的休息 后记 每日一句正能量 眼望古城街尽 心谱落愁无序 旧时的誓言 曾而相似 河水在遵循河道的指引下 在曲折前进中放声的歌唱 我却在心
  • 记录QTcpSocket碰到的ConnectToHost失败问题

    之前尝试Qt的QTcpSocket 发现ConnectToHost失败 waitForConnected一直返回false 一直不得其解 放弃了 直到最近再次使用 仍然是返回false 下定决心要解决这个问题 心血来潮查了QT的文档 发现有
  • 一文让你知道关于App推送那些事

    推送相关介绍 在用户未打开App时 服务端向用户推送服务器最新的消息数据 称为推送 消息推送在移动开发中用到的场景非常多 比如典电商类app的商品促销活动 资讯类的app的新闻推送等等 在实际开发中 我们常常会根据产品设计的需要 进行推送功
  • RF4CE安全性:概述

    配对流程 RF4CE配对是一个相当简单的过程 带来一些安全隐患 可能是由于试图简化最终用户的配对过程 首先 我们有发现阶段 外围设备发送具有一些特定属性集的发现请求命令 并等待来自满足这些要求的设备的发现响应命令 配对本身从外围设备发出的配
  • 服务器基础知识

    服务器基础知识 服务器是网络环境中的高性能计算机 它侦听网络上的其他计算机 客户机 提交的服务请求 并提供相应的服务 为此服务器必须具有承担服务并且保障服务的能力 一 服务器的分类 1 塔式服务器 塔式服务器即常见的立式 卧式机箱结构的服务
  • 基于单片机ISP技术原理及在线编程器的实现

    编程接口一般 芯片不焊在电路中 如华邦的51单片机 40引脚 可能是串口下载 STC 焊在板上的USB转串口下载 下面的ATMEL的ISP是模拟SPI下载 用单片机的P1 5P1 6P1 7下载 以ATMEL公司的AT89S51 AT89S
  • 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)

    解决的问题 适配器模式把一个类的接口变换成客户端所期待的另一种接口 从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作 比如说我的hp笔记本 美国产品 人家美国的电压是110V的 而我们中国的电压是220V 要在中国能使用 必须找个
  • Csdn爬虫自动评论

    前言 因为发现自己的csdn博客被机器人自动评论 这些博客很多都是对别人进行评论 然后别人就有可能回访或者点赞关注等等 基本上总积分非常高 为了覆盖掉这些机器评论 本篇主要是实现java爬虫对自己的博客所有文章进行自动评论 一 准备分析工作
  • vscode插件一draw.io绘图工具

    vscode 插件推荐一draw io 日常工作中需要制作时序图 流程图等 这里推荐的是vscode的插件中draw io 先自行在官网下载vscode https code visualstudio com 安装后打开vscode 如图在
  • c++ map 析构函数_C++核心准则C.36:析构函数不应该失败

    C 36 A destructor may not fail析构函数不应该失败 Reason 原因 In general we do not know how to write error free code if a destructor
  • Crazyswarm framework

    Crazyswarm framework 1 Tools Crazyfile Chooser Simulation sim flag 2 软件架构 使用方法 参考论文 应用的论文 3使用教程 参考网页 配置文件 example 基础 轨迹生
  • k8s 部署dubbo

    docker pull chenchuxin dubbo admin docker tag chenchuxin dubbo admin hub redblue ai com dubbo admin cat lt lt END gt dub
  • sql 数据查询返回值问题

    1 create 返回值 若发生错误 返回false 成功则返回创建的数据 2 add 返回值 addAll 返回值 成功 id或true 失败 false 成功 如果主键是自动增长型 返回值为新增记录Id值 addAll为最大值 否则返回
  • Microsoft Store打不开的解决方案

    Microsoft Store无法打开的解决方案 一 方案一 1 按Win i键 点击 网络和internet 2 转到 代理 关闭 使用代理服务器 3 尝试打开 microsoft store 二 方案二 1 按Win R键 输入inet
  • PHP请求微信接口获取用户电话号

    前言情景剧 业务场景是为了在用户登录的时候判断其是否已经成功注册 没有成功注册的话就将获取到的openid和session key加密后作为token传给前端 然后让前台通过组件获得code之后连着token一起传给后端 后端拿着code再
  • 服务机器人串口配置

    服务机器人串口配置 1 确定串口号 2 查看串口号对应的kernels 3 修改rules 1 确定串口号 如下图 以雷达为了例子 插拔之后 可知串口号为 ttyUSB1 2 查看串口号对应的kernels 3 修改rules 更改KERN
  • 搭建Zerotier内网穿透网络及彻底删除zerotier方法

    搭建Zerotier内网穿透网络 1 注册zerotier账号并登录https my zerotier com 2 访问https my zerotier com network 点击Create a Network 之后再Your Net
  • Java 【基础】 模拟log4j,输出当前语句的行数,和类路径

    一直很好奇log4j 是如何获取到当前输出的行数的 今天学到了 原来是堆栈跟踪 把代码贴出来给大家看一下 模拟log4j public static void debug String string System out println 调