不可能通过@Prodeuces CDI注入SLF4 Logger

时间:2015-04-19 15:15:53

标签: logging jboss7.x cdi slf4j weld

我想知道在使用Jboss 7.1的web应用程序中将org.slf4j.Logger注入REST服务的问题在哪里。我也添加了beans.xml。

那是我的制作人类:

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

public class LoggerProducer {

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

我是如何尝试使用Logger的:

import javax.inject.Inject;
import javax.ws.rs.Path;
import org.jboss.resteasy.spi.validation.ValidateRequest;
import org.slf4j.Logger;

@ValidateRequest
@RolesAllowed("admin")
@Path("domains")
public class DomainRestService {

     @Inject
     private DomainBean domainService;
     @Inject
     private Logger log;

但是当我尝试部署我的应用程序时,部署失败并出现以下异常:

 Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Logger] with qualifiers [@Default] at injection point [[field] @Inject private com.gbs.acc.service.rest.DomainRestService.log]

我见过很多Logger CDI注射的例子,但我不明白为什么不起作用?

1 个答案:

答案 0 :(得分:4)

您应该使用javax.enterprise.inject.Produces代替javax.ws.rs.Produces来注释producer类中的LoggerProducer制作人方法。