我正在使用Spring AOP和Log4J实现一个记录器作为一个方面,但是我注意到日志文件中的类名始终是LoggerAspect
类名,所以。。。有没有办法在我的日志中跟踪实际的类名?
用法:pjp.getTarget().getClass().getCanonicalName()
另外,若要在类级别添加日志,而不是使用advice类的记录器,请在advice方法中使用类级别记录器,如下所示
Logger logger = Logger.getLogger(pjp.getTarget().getClass().getCanonicalName());
这更容易:
pjp.getTarget().getClass()
@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文件中声明此依赖项: 使用常春藤