jakarta-ee - 使用 CDI 记录最佳方法

标签 jakarta-ee design-patterns logging cdi

使用 JEE 7 创建我的 RESTful 服务架构的新版本,部署到 Wildfly 9 实例,我想知道是否有一种巧妙的方法来创建日志系统,你能建议一些模式吗?非常感谢。

最佳答案

我正在为 JavaEE 7 JAX-RS 项目使用带有 SLF4J 接口(interface)的简单生产者。

import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggerProducer
{

    @Produces
    public Logger getLogger(final InjectionPoint ip)
    {
        return LoggerFactory.getLogger(ip.getMember().getDeclaringClass());
    }
}

使用注入(inject)非常方便。
@Inject
private Logger logger;

并且可以在不影响任何业务类的情况下轻松更改实现。由于实现 slf4j-simple 对我来说已经足够了,但是如果你需要更高级的东西,我会看看已经建议的 logback 或 log4j 2。

关于jakarta-ee - 使用 CDI 记录最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36292033/

相关文章:

objective-c - 在 Obj-C 中过度使用点运算符的替代方法是什么?

logging - Golang 日志记录策略

javascript - 仅实例化一个 javascript 模块一次

java - 具有操作传递的装饰器模式?

java - 使用接口(interface)名称将 jar 添加到 java 应用程序

jakarta-ee - 什么时候需要在 Glassfish 中使用单独的域?

java - 使用 java.util.logging.Logger 记录附加信息

visual-studio - 如何禁用可能由Visual Studio生成的MSI日志文件

javax.命名.NameNotFoundException

jakarta-ee - GlassFish/Payara 4.x 中的 glassfish-application.xml 和 glassfish-web.xml 有什么区别?