Eu tenho dois appenders configurados no meu arquivo log4j.properties, como eu faço para na minha classe eu criar duas variávies de log uma para cada appender??
A dificuldade era de pegar o appender do arquivo de .properties e atribuir para uma variável especifica.
Fiz uma POG aqui que resolve o assunto - não estou bem certo se é POG mesmo..
Eu criei duas classes separadas com métodos estáticos, assim na hora de chamar o log eu chamo estaticamente os métodos das classes.
Além disso eu posso passar os parâmetros que eu precisar para cada classe.
public class Main {
public static void main (String args[]) {
TesteApp1.logger("logando app1!!");
TesteApp2.logger("logando app2"");
}
}
Rodrigo_Manhaes
Não conheço Log4J a fundo, mas não entendi por que você precisa de dois Loggers para ter dois appenders. Eu já usei mais de um appender para o mesmo logger (na verdade três: um para System.out, outro para arquivo-texto e outro, customizado, para Document do Swing) e todos estes appenders recebiam dados do mesmo logger. A não ser que você queira ter logs diferentes para cada tipo de appender. Seria o caso?
Andre_Fonseca
Então, eu já tenho uma aplicação rodando e que faz log em arquivo, eu quero colocar um log em banco mas para apenas umas situações
Ou seja, eu queria mexer o menos possível no código da aplicação
Já que você utilizou antes, como eu faria para, usando uma configuração igual a do log4j.properties acima em alguns lugares do código o meu objeto Logger utilizar o appender para arquivo e em outros lugares utilizar o appender para banco de dados??
Eu até tentei utilizar o método getAppender da classe Logger, mas eu acho que eu tenho que usar Category porque esse método estava me retornando sempre nulo
[]´s
Rodrigo_Manhaes
Você pode instanciar e atribuir um appender via programação. No meu caso, eu criei um appender (estendendo a classe AppenderSkeleton do Log4J) para um javax.swing.text.Document do Swing e o liguei ao logger programaticamente.
final Appender documentAppender = new SwingDocumentAppender(processingLog.getDocument());
logger.addAppender(documentAppender); onde “logger” é um org.apache.log4j.Logger.
Assim, basta que você descubra a classe de appender do Log4J que você deseja utilizar e acredito (nunca fiz) ser possível você instanciar o appender e adicioná-lo on-the-fly ao logger.
Andre_Fonseca
Entendi…
mas se eu quiser pegar os appenders que já estão definidos no arquivo de properties, como faria??
Andre_Fonseca
Bom, na verdade decidimos abortar o uso do log4j aqui, criei uma classe Logger que utiliza a conexão do DAO e insere na tabela que preciso os dados que preciso, que a propósito vem de lugares diferentes…rs