[Log4j] Problema em utilizar dois appenders

3 respostas
TheThis

Olá,

estou com um problema que é o seguinte:

Tenho que logar a aplicação em um arquivo, e no console, porém tenho que fazer esta configuração no arquivo xml que é carregado via servlet ao rodar a aplicação, porém não imprime no console, apenas no arquivo.

Por favor me ajudem…

Tenho configurado no web.xml o seguinte trecho:

<servlet>
	<servlet-name>Log4jServlet</servlet-name>
	<servlet-class>br.com.since.log4j.Log4jServlet</servlet-class>
	<init-param>
		<param-name>log4j</param-name>
		<param-value>/log_ias/config-log4j/since/since.xml</param-value>
	</init-param>
	<load-on-startup>0</load-on-startup>
</servlet>

e no servlet ele está com o seguinte código:

public class Log4jServlet extends HttpServlet {

	private static final long serialVersionUID = -8448341114771849656L;

	/**
	 * Método responsável por inicializar o log
	 * 
	 * @param ServletConfig
	 * @throws ServletException
	 */
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		loadLogConfiguration();
		LogWriter.warn("LOG SINCE inicializado com sucesso...");
	}

	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		String dispatch = req.getParameter("dispatch");
		if ("reloadConfig".equals(dispatch)) {
			loadLogConfiguration();
			LogWriter.warn("LOG SINCE reinicializado com sucesso...");			
		}
	}

	/**
	 * Método responsável por carregar as configurações do log4j
	 */
	private void loadLogConfiguration() {
		// Recupera o caminho para o arquivo de configuração
		String confFilePath = getInitParameter("log4j");
		// Carrega as informações e configura o log
		DOMConfigurator.configure(confFilePath);
	}
}

e o arquivo since.xml(arquivo de configuração do log4j) está da seguinte maneira:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	<appender name="SINCE" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="Append" value="false"/>
		<param name="Encoding" value="ISO-8859-1"/>
		<param name="File" value="/log_ias/since/since.log"/>
		<param name="MaxFileSize" value="100KB"/>
		<param name="DatePattern" value="'.'yyyy-MM-dd-a"/>
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%5p] %d{yyyy/MM/dd HH:mm:ss} %c{1} - %m%n"/>
		</layout>
	</appender>
	<appender name="SINCE-CONSOLE" class="org.apache.log4j.ConsoleAppender">  
		<layout class="org.apache.log4j.PatternLayout">  
			<!-- Pattern to output the caller's file name and line number -->  
                        <param name="ConversionPattern" value="%5p [%t] (%F:%L) - %m%n" />  
                </layout>  
        </appender>
        <root>
		<priority value="warn"/>
		<appender-ref ref="SINCE"/>
		<appender-ref ref="SINCE-CONSOLE"/>
	</root>
</log4j:configuration>

Desde já agradeço … Abraços

Edit: Título…

3 Respostas

TheThis

UP!

Pessoal, ainda estou com o mesmo problema, alguém poderia por favor me ajudar?

Grato.

maior_abandonado

no seu log4j.properties você só precisa criar os 2 appenders.

olha esse exemplo que peguei de uma app aqui:

log4j.rootCategory=

log4j.category.logAutorizador=DEBUG,apend1,apend2

log4j.appender.apend1=org.apache.log4j.RollingFileAppender
log4j.appender.apend1.File=System.out
log4j.appender.apend1.layout=org.apache.log4j.PatternLayout
log4j.appender.apend1.layout.ConversionPattern=%m%n

log4j.appender.apend2=org.apache.log4j.RollingFileAppender
log4j.appender.apend2.File=log/arquivo.log
log4j.appender.apend2.Append=true
log4j.appender.apend2.MaxFileSize=10MB
log4j.appender.apend2.MaxBackupIndex=30
log4j.appender.apend2.layout=org.apache.log4j.PatternLayout
log4j.appender.apend2.layout.ConversionPattern="%d{dd/MM/yyyy - HH:mm:ss.SSS}","[%t]","%-5p","%m"%n
TheThis

O problema é que eu não estou utilizando o log4j.properties e sim um xml que fica fora da aplicação, conforme descrito no primeiro post

Criado 9 de fevereiro de 2010
Ultima resposta 19 de fev. de 2010
Respostas 3
Participantes 2