Log4j2:如何在不使用 Throwable 的情况下获取类名和行号?

2023-12-28

我在 Log4j2 上开发了一个包装类。使用 OSGi 的声明性服务,我使用我自己的记录器接口发布了一个自定义记录器服务,并以包装器类作为实现。包装类仅用于以编程方式配置记录器、消息格式化和添加更多方法,最后它调用 Log4j2 的日志记录方法。

我想打印日志文件中请求的每个日志的源类/文件名和行号。选项 %C/%F 和 %L 仅打印有关我的包装类中我实际调用的位置的信息log方法。

所以作为一项锻炼,我通过了新的可抛出的每次作为参数,以便我可以使用布局%throwable{short.lineNumber}。但这对于嵌入式应用程序来说是一个昂贵的过程。

我的主要问题是获取行号,因为对于文件名,我至少可以从 Log4j2 请求一个新记录器,其中包含请求记录器服务的每个服务的名称,并将其保存在映射中。

有没有办法追踪调用者?我希望对于那些不希望记录器服务的每个使用者都拥有 LOG4j2 jar 的应用程序有一个类似的解决方案。仅供参考,我不想使用任何 XML 文件,所有配置都是以编程方式进行的。


您可以使用

StackTraceElement[] stes = Thread.currentThread().getStackTrace();

但我不确定这是否便宜得多。

我所做的就是使每条消息(对于班级)都是唯一的,并避免包含行号。您可以在 IDE 中搜索唯一消息来查找行号。该类应该以记录器的名称命名。

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

Log4j2:如何在不使用 Throwable 的情况下获取类名和行号? 的相关文章

随机推荐

  • 异步函数何时实际返回待处理的承诺?

    我用谷歌搜索了这个问题很多次 但我看到这个问题的唯一答案是 异步函数总是返回一个承诺 但我没有找到任何可以回答这种情况何时真正发生的问题 是一进入异步函数还是一遇到第一个await关键词 我刚刚写了这段代码 async function m
  • 使用 JavaScript 平滑更改文本

    我正在制作一个登陆页面 其中的短语会随着选定的单词而不断变化 例如 设计更好的网站为客户制作 将切换第一个或最后一个单词成为 开发更好的网站为客户制作 然而 由于 开发 这个词比 设计 更大 因此文本的其余部分最终会被推来推去 而无法顺利过
  • 使用 cURL 测试 AWS API Gateway

    我确实有一个受 AWS IAM 授权保护的简单 AWS API Gateway 实施 我只想通过 cURL 从命令行进行测试 curl location request GET https
  • 在 WPF 中使用快速彩色文本框进行语法突出显示

    是否可以在 WPF 中使用快速彩色文本框进行语法突出显示 http www codeproject com Articles 161871 Fast Colored TextBox for syntax highlighting http
  • 在 Notepad++ 中智能突出显示时显示出现次数

    是否可以显示智能突出显示的单词出现的次数 我的意思是当你双击一个单词时 在 Matlab 中 例如通过让光标触摸单词并在工具栏中显示它来激活智能突出显示即刻例如说4 usages of weight found 搜索单词 短语将为您提供相同
  • jQuery 1.8 中的 pipeline() 和 then() 文档与现实

    更新 这个问题现在已经过时了 因为文档是准确且最新的 我一直在探索 jQuery Deferred Promise API 但我对两者之间的差异感到非常困惑pipe and then 在哲学上和 jQuery 文档中 我发现从 jQuery
  • 函数(d)和函数(d,i)之间的区别?

    Every D3js初学者我一定正在经历这个想法 我对此非常确定 我已经在这个东西上呆了几个小时了 但我不知道如何使用它 也不知道它是什么不同之处它们之间 function d return d function d i return d
  • 如何从栅格中提取其最高值位于多边形内的 xy 坐标?

    给出的是一个栅格以及一个 SpatialPolygonsDataframe 为了检索多边形区域内栅格的最高值 可以使用 raster extract 效果很好 如何另外获取多边形区域内栅格提取的最高值的坐标 create raster r
  • 如何使用 WebMatrix 连接到 SQL Server 数据库?

    我添加了一个连接 它显示在 其他连接 中 但我似乎无法引用它 var db Database Open MyNewConnection 抛出异常 Connection string MyNewConnection was not found
  • 在 Azure Function 中添加自定义遥测属性

    我有一个 Azure 函数 v2 其中数据通过 HTTP 主体以 JSON 形式传入 我想使用标准在 Application Insights 中记录一些 JSON 数据Trace and Request events 到目前为止我尝试过的
  • 使用 Task.WhenAll 执行多个任务时 foo.Start() 出现错误

    我收到此错误 可能无法在承诺式任务上调用 Start 所以我注释掉了 Start 我再次尝试并收到此错误 可能无法在已完成的任务上调用启动 那么我应该怎么做才能使其正常工作呢 var dashboardDailyAgeAnalysis Da
  • 如何在 Visual Studio 中更快地键入“{0}”?

    在 C 中 通常需要输入 0 1 等格式化字符串时string Format https msdn microsoft com en us library system string format v vs 110 aspx or Cons
  • 使用正则表达式验证 Youtube 播放列表 URL

    如何验证 YouTubeplaylisturl 使用正则表达式 我找到了验证其他问题视频的答案 http www youtube com watch v w S 但我无法验证这样的网址 http www youtube com watch
  • OSX El Capitan 上的 crontab 是否损坏?

    问题 Is cron应该在 OSX El Capitan 中工作吗 背景 我在 OSX 上使用 crontab 已经很多年了 但在 El Capitan 上它似乎不起作用 我将我的用户名添加到 usr lib cron cron allow
  • 将省略号传递给另一个可变参数函数[重复]

    这个问题在这里已经有答案了 我有大约 30 个可变参数函数 每个都接受路径作为最终参数 例如 bool do foo struct f int q const char fmt 在每个函数中 我必须检查扩展格式是否小于或等于特定大小 因此
  • OpenID Microsoft 登录后,PWA 在 Safari iOS (13.5) 中冻结导航点击

    OpenID 授权用户后 PWA 冻结 iOS Safari Standalone 我为我们的安全人员构建了一个简单的 PWA 允许员工单击链接并查看有关我们公司在各种事务上的政策的内容 该应用程序使用 Microsoft 的 OWIN 中
  • 在 JSON 文件中写入什么来创建多折线图 HTML

    我是 javascript 新手 所以请原谅我 我正在尝试制作一个折线图 有 4 条线 每小时更新一次 这些信息可以在 JSON 文件中找到 但我不确定如何编写它 以前我曾尝试使用data addColumn and data addRow
  • Android应用程序设计分辨率

    我需要为 Android 设计一个应用程序 经过一番阅读后 我发现 Android 设备在分辨率方面分为几个类别 例如 小屏幕 正常屏幕 大屏幕 超大屏幕 但密度不同 所以可以说 现在我需要为普通屏幕设计一个设计 我应该使用什么分辨率 外观
  • Visual C# 命令行编译器已停止工作?

    我有一个项目 iv 已经工作了一段时间 但是今天当我尝试构建解决方案时 显示了以下消息 当我尝试运行我的项目时 此消息出现两次 但出现此消息后该项目能够运行 问题是我无法发布 因为这会阻止我的发布 问题签名如下 Problem Event
  • Log4j2:如何在不使用 Throwable 的情况下获取类名和行号?

    我在 Log4j2 上开发了一个包装类 使用 OSGi 的声明性服务 我使用我自己的记录器接口发布了一个自定义记录器服务 并以包装器类作为实现 包装类仅用于以编程方式配置记录器 消息格式化和添加更多方法 最后它调用 Log4j2 的日志记录