Java SLF4J,以避免每次都写入LoggerFactory.getLogger(MyClassName.class)
我正在用Java编写一个web应用程序,并使用SLF4J进行日志记录 我已经厌倦了为每一个使用日志记录的类写下面的一行:Java SLF4J,以避免每次都写入LoggerFactory.getLogger(MyClassName.class),java,log4j,slf4j,Java,Log4j,Slf4j,我正在用Java编写一个web应用程序,并使用SLF4J进行日志记录 我已经厌倦了为每一个使用日志记录的类写下面的一行: private static final Logger Logger=LoggerFactory.getLogger(ThisClassName.class); 为了避免冗余代码,我想 接口日志{ 记录器(); } 每个类都可以实现这个接口,然后像AOP这样的魔术插入了LoggerFactory部分 是否有人实现了这一点或知道如何实现这一点 谢谢 您正在使用eclipse
private static final Logger Logger=LoggerFactory.getLogger(ThisClassName.class);
为了避免冗余代码,我想
接口日志{
记录器();
}
每个类都可以实现这个接口,然后像AOP这样的魔术插入了LoggerFactory
部分
是否有人实现了这一点或知道如何实现这一点
谢谢 您正在使用eclipse吗?如果是这样的话,为什么不使用带有关键字(如“logger”)的代码模板以及以下模板:
${:import(org.slf4j.LoggerFactory, org.slf4j.Logger)}
private static final Logger LOGGER = LoggerFactory.getLogger(${enclosing_type}.class);
这样,您只需键入“logger”,点击shift+space就可以了。中很好地演示了使用AOP进行日志记录。 我们似乎无法在方法中动态插入记录器来记录方法执行的细节。单元测试用例可以解决这个问题。
方法调用的日志记录可以由AOP处理您在使用CDI吗?如果是这样,请创建一个producer方法,然后@injectthelogger到任何启用CDI的类
@Produces Logger createLogger(InjectionPoint injectionPoint) {
return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
}
请参见如果您在类上使用@Slf4j注释,则默认情况下lombok将生成一个变量“log”
@Slf4j
public class YourClass {
public void someMethod() {
log.error("Test log");
}
}
请参阅链接
准确、简单,并能完成工作。仅为这些琐碎的问题使用AOP是一个疯狂的想法(尤其是当您的项目还没有配置AOP时)