gpt4 book ai didi

java - 寻求一种轻量级但灵活的解决方案来使用 log4j 记录方法进入和退出(可能通过异常)

转载 作者:行者123 更新时间:2023-11-30 11:49:28 25 4
gpt4 key购买 nike

我需要一个轻量级的解决方案,它可以让我记录方法进入和/或退出和/或异常。我希望能够配置:

  • 进入/退出/异常日志级别。例如,我可能有用于退出的 Debug 级别、用于进入的 Info 级别和用于异常的 Error 级别。
  • 进入/退出/异常日志消息。日志消息应允许我引用方法名称、方法参数和方法结果。

让我们以这种方式为例:

public ObjectB MyFunc(int x, string s, ObjectA y)
{
// implementation
}

然后,假设 @Log 是这样一个神奇的注释,可以在 MyFunc 方法上使用这些 @Log 注释中的任何一个:

@Log                   // should be a reasonable default
@Log(EntryLevel = LogLevel.Info, ExitLevel = LogLevel.Debug) // makes sense to have ExceptionLevel = LogLevel.Error by default
@Log(EntryText = "{method}({methodArguments}) = ?", ExitText = "{method} = {methodResult}")
@Log(EntryText = "{method}({@x}, {@s}, ...)")

地点:

  • {method} 将替换为“MyFunc”
  • {methodResult} 将替换为方法结果的 toString
  • {@x} 将替换为 x 方法参数的 toString
  • {@s} 将替换为 s 方法参数的 toString
  • {@y} 将替换为 y 方法参数的 toString
  • {methodArguments} 将被替换为 "x: {@x}, s: {@s} , y: {@y}", 或 "{@x}, {@s}, {@y}",它可以由 boolean 标志控制,例如 includeArgumentName

郑重声明,在 .NET 中,我们使用(由我们)修改的 Log4PostSharp 库版本,它通过在编译阶段注入(inject)正确的字节码来完成上述所有操作。因此,我很清楚自己在寻找什么,尽管我完全不知道如何在 Java 中完成它,也不知道是否已经完成了类似的事情。

谢谢。

编辑

我想解决性能问题。代码中可能包含大量日志语句。当没有执行实际日志记录时(例如,由于日志级别限制),执行这些语句不得导致任何可见的性能损失。

最佳答案

关于java - 寻求一种轻量级但灵活的解决方案来使用 log4j 记录方法进入和退出(可能通过异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8376063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com