scala 日志记录函数名称

2024-03-18

在我的日志条目中,我想记录调用 log 方法的函数名称。

这是为了能够自动按函数名称过滤日志条目。这可能吗?有任何图书馆吗?对现有库有任何扩展吗?

换句话说,是否可以在运行时提取执行上下文当前正在执行的scala函数的名称?

第二个问题:我知道这可能有些牵强,但理想情况下,包含日志记录调用的最接近的封闭命名函数是首选,而不是 scala 为其生成神秘名称的实际匿名函数。后者很难从日志中读取。


这里有一个hack你可以使用的。它遍历当前堆栈跟踪以查找第一个非匿名函数。

def printStackFrame() {
  /* Get current stack trace. The first frame is this method call. */
  val st = new RuntimeException().getStackTrace.view.drop(1)

  // st take(5) foreach println /* Print a few frames of interest */

  val name =
    st.map(ste => ste.getClassName + "." + ste.getMethodName)
      .dropWhile(_.matches(""".*anonfun\$\d*\.apply\$mcV\$sp$"""))
      .apply(0)

  println(name)
}

你可以这样使用它:

class MyClass {
  def mydef() {
    printStackFrame()
  }

  def myhof(f: () => Unit) {
    f()
  }
}

val mc = new MyClass
mc.mydef() // Main$$anon$1$MyClass.mydef
mc.myhof(mc.mydef) // Main$$anon$1$MyClass.mydef
mc.myhof(() => {printStackFrame()}) // Main$$anon$1$MyClass.myhof

明显的缺点是其脆弱性。我完全不确定上面的单个正则表达式是否足以忽略所有匿名或其他无趣的函数。即使如此,也不能保证命名模式在未来的 Scala 版本中不会发生变化。

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

scala 日志记录函数名称 的相关文章

  • 如何在构建 Android 应用程序的发布版本之前删除所有调试日志记录调用?

    根据谷歌的说法 我必须 停用源代码中对 Log 方法的任何调用 在将我的 Android 应用程序发布到 Google Play 之前 摘自第 3 节出版清单 https developer android com studio publi
  • Django 使用用户/IP 进行日志记录

    我正在使用 logging 模块来记录大量消息 我想将 用户 request user 添加到日志中 但是 虽然它在视图函数中可用 但我不想将其传递给所有助手 有谁知道这个方法吗 我正在考虑以某种方式跟踪跟踪 直到找到参数中带有 请求 的函
  • 如何用Java写入OS系统日志?

    Mac OS 有一个名为 Console 的应用程序 其中包含记录的消息 错误和故障 我相信 Windows 中的等效项是事件查看器 我想 Linux 上也有一个 但我不知道它是什么 也不知道它在哪里 是否可以像这样从 Java 输出获取消
  • Spark日期格式问题

    我在火花日期格式中观察到奇怪的行为 实际上我需要转换日期yy to yyyy 日期转换后 日期应为 20yy 我尝试过如下 2040年后失败 import org apache spark sql functions val df Seq
  • Scala(或 Java)中泛型函数的特化

    是否可以在 Scala 中专门化泛型函数 或类 例如 我想编写一个将数据写入 ByteBuffer 的通用函数 def writeData T buffer ByteBuffer data T buffer put data 但由于 put
  • 为什么 Scala 中的隐式类必须驻留在另一个特征/类/对象中?

    基于scala文档 http docs scala lang org overviews core implicit classes html http docs scala lang org overviews core implicit
  • 如何在 Apache Spark 中通过 DStream 使用特征提取

    我有通过 DStream 从 Kafka 到达的数据 我想进行特征提取以获得一些关键词 我不想等待所有数据的到达 因为它是可能永远不会结束的连续流 所以我希望以块的形式执行提取 如果准确性会受到一点影响 对我来说并不重要 到目前为止 我整理
  • 多个 scala 库导致 intellij 出错?

    我正在使用 intellij 14 和 scala 2 11 6 使用 homebrew 安装并使用符号链接 ln s usr local Cellar scala 2 11 6 libexec src usr local Cellar s
  • Scala 的代码覆盖率工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 模拟 BlazeClientBuilder[IO] 以返回模拟客户端[IO]

    我正在使用BlazeClientBuilder IO resource方法得到Client IO 现在 我想模拟客户端进行单元测试 但不知道该怎么做 有没有一个好的方法来嘲笑这个 我会怎么做 class ExternalCall val r
  • 从 HList 获取元素

    我尝试了 HList 并按预期进行了以下工作 val hl 1 foo HNil val i Int hl 0 val s String hl 1 但是 我无法让以下代码正常工作 让我们暂时假设对列表进行随机访问是一个聪明的主意 class
  • CakePHP - 获取上次运行的查询

    我想获取 CakePHP 运行的最后一个查询 我无法在 core php 中打开调试 也无法在本地运行代码 我需要一种方法来获取最后一个 sql 查询并将其记录到错误日志中而不影响实时站点 该查询失败但正在运行 像这样的事情会很棒 this
  • 具有继承类型的 Aux 模式推理失败

    我有一个复杂的玩具算法 我希望纯粹在类型级别上表示 根据饮食要求选择当天菜肴的修改 对卷积表示歉意 但我认为我们需要每一层才能达到我想要使用的最终界面 我的代码有一个问题 如果我们表达一个类型约束Aux 模式生成的类型基于另一个泛型类型 它
  • 将 IndexToString 应用于 Spark 中的特征向量

    Context 我有一个数据框 其中所有分类值都已使用 StringIndexer 进行索引 val categoricalColumns df schema collect case StructField name StringType
  • Akka-Streams 收集数据(Source -> Flow -> Flow (collect) -> Sink)

    我对 Scala 和 Akka 完全陌生 我有一个简单的 RunnableFlow Source gt Flow do some transformation gt Sink runForeach 现在我想要这样的东西 Source gt
  • 抑制 nginx 访问被拒绝错误日志

    我在 nginx 中设置了一些规则来拒绝 IP 访问 这很有效 但对于来自被拒绝 IP 的每个请求 都会记录以下开头的错误 error 7325 0 5761 access forbidden by rule client 有没有办法抑制这
  • 如何通过 javascript 和 ajax 调用 Scala 中的方法?

    我不知道我的标题是否有点误导 但这是我真正需要帮助的 我正在获取这个网址 get fb login fbEmail function data console log data 这是我的路线 GET fb login email prese
  • 为什么自类型类可以声明类

    我知道 Scala 只能混合特征 这对于依赖注入和蛋糕模式是有意义的 我的问题是为什么我仍然可以声明一个需要另一个 类 但不需要特征的类 Code class C class D self C gt 这仍然编译成功 我认为它应该编译失败 因
  • Spring boot 中特定包的自定义日志文件

    我有一个带有专门操作的java包 专业化是因为它们很少被使用 并且我不想将它们与普通日志记录混合在一起 我知道添加logging file myapplication log会将日志记录重定向到此文件 但有没有办法指定仅从特定包记录到另一个
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse

随机推荐

  • Android:处理下载数据时意外的互联网断开连接

    我这里有一个将数据从远程服务器下载到文件的功能 我对我的代码仍然没有信心 我的问题是 如果在读取流并将数据保存到文件时突然与互联网断开连接 下面的这些捕获异常是否真的可以捕获此类事件 如果没有 您能建议如何处理此类事件吗 注意 我在一个线程
  • XML 模式到 C++ 类 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我必须编写一个 C 应用程序 使用 GUI 的 Qt 框架 它可以编辑存储在 xsd 架构文件描述的
  • C++11:按值调用、移动语义和继承

    假设我有一个类 我计划直接将其公开为可实例化类 给程序员 class Base public Base std string text m text std move text private std string m text 到目前为止
  • 二维码数据格式的规范是什么?我在任何地方都找不到它

    我特别想问的是 规格是否以及是什么 设置 QR 码内文本的格式 不是如何生成代码 我可以做到 我需要将 hCard 数据放入 QR 码中 但是我不知道如何将 QR 码标记为 VCF 数据 相对于 URL 文本等 以便解码器知道该怎么做 我在
  • 在 iOS 10 中添加本地通知 - Swift 3

    所以我一直在尝试向新的 UNUserNotificationCenter 添加通知 但我似乎没有得到它 我的视图控制器有一个操作 IBAction func sendPressed sender AnyObject let content
  • 如何获取设备令牌

    安装完成后 我需要获取 deviceToken 以用于其他目的 这是我到目前为止所开发的 Parse initialize this qqd423WEfwWEF32FewferT434fs323rfRT g7Rre4g7gsGRwgGw45
  • 忽略特定列表排序器的排序

    我可以忽略 jquery 表排序插件中特定列的排序吗 因此 基本上 当页面加载时 我不希望在 搜索 列上进行任何排序 因为它包含图像并自行进行一些 JavaScript 处理 这会大大减慢我的排序速度 这是我的代码
  • window.parent.location.href 或 window.top.location 哪一种更好

    我正在一个项目中工作 在特定情况下我必须在错误页面上重定向 为此 我创建了 Error aspx 页面 现在我正在使用 window top location href Error aspx 并生成http localhost app we
  • 当没有行时 RecordNotFound 返回 false

    我有问题这个图书馆 https godoc org github com jinzhu gorm DB RecordNotFound因为即使给定的输入不在数据库中 该函数也会返回 false 而实际上它应该返回 true type User
  • 写入 TcpClient 和 NetworkStream

    我对如何在 net 中使用 tcp 流有点困惑 现在 当我想写40字节时 我将其写入内存流 然后调用ToArray 并将内存流写入网络流 刷新 在服务器端 我使用 Read buf 0 len 并检查长度是否完全符合我的预期 我这样做是不是
  • MYSQL:如何创建一个触发器来根据不同表中的值计算字段值?

    In table A我有田地CENA 价格 cena za kus 每件价格 mnozstvi 数量 In table B我有田地DPH vat 我想添加一个更新 插入之前触发器 它将计算PRICE字段 像这样 price price pe
  • 如何从 HSSFWorkbook 对象获取输入流

    我希望我的 Web 应用程序用户将一些数据下载为 Excel 文件 我有下一个函数在响应对象中发送输入流 public static void sendFile InputStream is HttpServletResponse resp
  • 如何在 jQuery/Javascript 中编写 switch 语句来测试元素是否具有特定类?

    这是我正在使用的 if else 语句的结构 myclass a click function if this hasClass class1 do something else if this hasClass class2 do som
  • ASP.NET MVC 模型绑定器。使用对象数组参数调用控制器

    我想要 MVC 控制器的以下签名 public ActionResult Create Persons p 有可能有这样的东西吗 编辑 假设我想通过提交由特殊符号分隔的名称列表来获取人员对象数组 例如我提交一个表格
  • 使用 C# 从字符串路径构建文件夹/文件树[重复]

    这个问题在这里已经有答案了 我需要解决一个涉及从字符串路径构建树的问题 以下是模型 public class Folder public string Name get set public List
  • Hibernate 4.0.1 至 4.3.5:无法建立 JDBC 连接

    我有一个使用 Hibernate 4 0 1 与 derby 数据库交互的项目 效果很好 这是一个示例程序 它仅连接到数据库并且不执行任何操作 import org hibernate Session import org hibernat
  • 委托给私有部分

    有时 C 的隐私概念让我感到困惑 class Foo struct Bar Bar p public Bar operator gt const return p struct Foo Bar void baz std cout lt lt
  • 是否可以用 angular2 注入接口?

    我想知道 Angular2 中是否有正确的方法来注入接口 参见下文 我认为这与界面上缺少 Injectable 装饰器有关 但似乎这是不允许的 Regards 当 CoursesServiceInterface 作为接口实现时 TypeSc
  • 如何避免控制台窗口包含包含 os.system 调用的 .pyw 文件?

    如果我将代码文件另存为 pyw 没有出现控制台窗口 这就是我想要的 但如果代码包含对os system 我仍然看到一个讨厌的控制台窗口 我认为这是由调用引起的os system 有没有办法从我的内部执行其他文件 pyw脚本根本不升起控制台窗
  • scala 日志记录函数名称

    在我的日志条目中 我想记录调用 log 方法的函数名称 这是为了能够自动按函数名称过滤日志条目 这可能吗 有任何图书馆吗 对现有库有任何扩展吗 换句话说 是否可以在运行时提取执行上下文当前正在执行的scala函数的名称 第二个问题 我知道这