当前位置: 首页 > 知识库问答 >
问题:

Log4j和AOP,如何获得实际类名

巴宏恺
2023-03-14

我正在使用Spring AOP和Log4J实现一个记录器作为一个方面,但是我注意到日志文件中的类名始终是LoggerAspect类名,所以。。。有没有办法在我的日志中跟踪实际的类名?

共有3个答案

颜河
2023-03-14

用法:pjp.getTarget().getClass().getCanonicalName()

另外,若要在类级别添加日志,而不是使用advice类的记录器,请在advice方法中使用类级别记录器,如下所示

Logger logger = Logger.getLogger(pjp.getTarget().getClass().getCanonicalName());
曾永新
2023-03-14

这更容易:

pjp.getTarget().getClass()
夹谷成龙
2023-03-14
@Around("execution(* com.mycontrollerpackage.*.*(..))")
public Object aroundWebMethodE(ProceedingJoinPoint pjp) throws Throwable {      
    String packageName = pjp.getSignature().getDeclaringTypeName();
    String methodName = pjp.getSignature().getName();
    long start = System.currentTimeMillis();
    if(!pjp.getSignature().getName().equals("initBinder")) {
       logger.info("Entering method [" + packageName + "." + methodName +  "]");
    }
    Object output = pjp.proceed();
    long elapsedTime = System.currentTimeMillis() - start;
    if(!methodName.equals("initBinder")) {
       logger.info("Exiting method [" + packageName + "." + methodName + "]; exec time (ms): " + elapsedTime);
    }
    return output;
}
 类似资料:
  • 我正在开发一个android应用程序,向用户显示预订的时间和日期。目前我使用的是系统时间和日期,但问题是用户可以随时更改它。那么如何得到正确的时间和日期呢?我在这个问题上工作了3天多,但我还没有找到任何解决办法。任何帮助都很感激。

  • 问题内容: 我面临一个非常奇怪的问题。我有一套每天在Jenkins上运行的测试,并且没有任何明显的变化,一些断言(期望)开始失败。奇怪的是,只有当我在Browserstack上从Jenkins执行测试时,它们才会失败。在本地一切正常,在浏览器堆栈本地一切正常,在saucelabs上一切正常。我有3个具有类似期望的it()块: 它们都位于不同的it()块中。现在奇怪的是: 当我执行测试时,使用第一个

  • 问题内容: 我有一个泛型类。在一种方法中,我想获取的类实例,但我无法调用。 使用它解决问题的首选方法是什么? 问题答案: 简短的答案是,无法找到Java中泛型类型参数的运行时类型。我建议阅读Java教程中有关类型擦除的章节以获取更多详细信息。 一个流行的解决方案是Class将type参数的传递给泛型类型的构造函数,例如

  • 问题内容: 我有一个泛型类。在一种方法中,我想获取类型T的类实例,但是我不能调用。 使用它解决问题的首选方法是什么? 问题答案: 简短的答案是,无法找到Java中泛型类型参数的运行时类型。我建议阅读Java教程中有关类型擦除的章节以获取更多详细信息。 一个流行的解决方案是将type参数的传递给泛型类型的构造函数,例如

  • 问题内容: 在Java中,我们可以使用 如何在PHP中做到这一点?我已经知道了,但是它仅适用于对象。目前,我在Active Record中工作。我需要像这样的声明。 问题答案: 从PHP 5.5开始, 您可以通过 ClassName :: class 使用类名解析。 查看PHP5.5的新功能。 如果要在类方法中使用此功能,请使用 static :: class : 对于旧版本的PHP ,可以使用g

  • 本文向大家介绍Java如何获取Log4j,包括了Java如何获取Log4j的使用技巧和注意事项,需要的朋友参考一下 示例 当前版本(log4j2) 使用Maven: 将以下依赖项添加到POM.xml文件中: 使用常春藤: 使用Gradle: 获取log4j 1.x 注意: Log4j 1.x已达到寿命终止(EOL)(请参阅备注)。 使用Maven: 在POM.xml文件中声明此依赖项: 使用常春藤