Log4j no Vraptor

Olá,

Como eu faço pra criar um log usando o Log4j no Vraptor? O Vraptor não oferece injeção de dependência pra essa classe? Eu tentei fazer o seguinte:

[code]import org.apache.log4j.Logger;

@Resource
public class PagesController {

private final Result result;
private final Logger logger;

public PagesController(Result result, Logger logger) {
	this.result = result;
	this.logger = logger;
}

...

}[/code]

O servidor inicia normalmente, mas as páginas do site não carregam.

você pode fazer sem ser pelo construtor:

@Resource  
public class PagesController {  
   private static final Logger logger = LoggerFactory.getLogger(PagesController.class);
   //...
}

Os imports são de org.slf4j

[quote=Lucas Cavalcanti]você pode fazer sem ser pelo construtor:

@Resource  
public class PagesController {  
   private static final Logger logger = LoggerFactory.getLogger(PagesController.class);
   //...
}

Os imports são de org.slf4j[/quote]

Eu fiz isso, mas não está logando. Ou eu que não consegui achar o log… No console não imprime o log e já procurei em alguns arquivos do servidor e não achei. Onde que fica a informação logada?

vc precisa de uma configuração pra isso. Por exemplo um xml como esse:

ajustando para os pacotes da sua aplicação… esse arquivo precisa estar no classpath.

[quote=Lucas Cavalcanti]vc precisa de uma configuração pra isso. Por exemplo um xml como esse:

ajustando para os pacotes da sua aplicação… esse arquivo precisa estar no classpath.[/quote]

Sim, eu já tenho esse arquivo no meu projeto. Eu usei o template do Vraptor, que já vem com esse arquivo. Inclusive, eu acho que o Vraptor consegue logar no console. porque aparecem as seguintes mensagens quando eu inicio o servidor:

[quote]INFO: Initializing ProtocolHandler [“http-bio-8080”]
INFO: Initializing ProtocolHandler [“ajp-bio-8009”]
INFO: Initialization processed in 1013 ms
INFO: Starting service Catalina
INFO: Starting Servlet Engine: Apache Tomcat/7.0.32
INFO: Starting ProtocolHandler [“http-bio-8080”]
INFO: Starting ProtocolHandler [“ajp-bio-8009”]
INFO: Server startup in 6042 ms[/quote]

Porém, a mensagem que eu mando logar não aparece.

Esse é o log até o startup… vc chegou a fazer alguma requisição?

o jar do log4j e do slf4j-log4j estão no classpath?

[quote=Lucas Cavalcanti]Esse é o log até o startup… vc chegou a fazer alguma requisição?

o jar do log4j e do slf4j-log4j estão no classpath?[/quote]

Fiz uma requisição sim. Inclusive eu mando logar no controller de uma requisição.

E os 2 jars estão no classpath.

posta aqui como está o seu log4j.xml e como vc tá fazendo o log no controller, plz

Log4j.xml:

[code]<?xml version="1.0" encoding="UTF-8" ?>

<log4j:configuration xmlns:log4j=“http://jakarta.apache.org/log4j/”>

    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" 
                            value="%d{HH:mm:ss,SSS} %5p [%-20c{1}] %m%n"/>
            </layout>
    </appender>

    <category name="br.com.caelum.vraptor">
            <priority value="INFO" />
            <appender-ref ref="stdout" />
    </category>
    
    <category name="org.springframework">
            <priority value="INFO" />
            <appender-ref ref="stdout" />
    </category>

</log4j:configuration>[/code]

No controller:

[code]@Resource
public class IndexController {

private static final Logger logger = LoggerFactory.getLogger(IndexController.class);

@Path("/")
public void index() {
	logger.error("Ocorreu um erro no servidor.");
}

}[/code]

faltou incluir o appender do pacote das suas classes:

<category name="br.com.seu.pacote.base.aqui">  
       <priority value="INFO" />  
       <appender-ref ref="stdout" />  
</category>  

[quote=Lucas Cavalcanti]faltou incluir o appender do pacote das suas classes:

<category name="br.com.seu.pacote.base.aqui"> <priority value="INFO" /> <appender-ref ref="stdout" /> </category> [/quote]

Agora funcionou! :slight_smile:

Obrigado pela ajuda.