Hello. I think this question has been asked before, but not exactly with
the same intentions.
I have extended ConsoleAppender to log to a ScrollArea. This way:
public class taAppender extends ConsoleAppender{
private JTextArea taLog=new JTextArea();
public JScrollPane ScrollTA= new JScrollPane(taLog,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
private JScrollBar vbar = ScrollTA.getVerticalScrollBar();
public taAppender(){
System.out.println("constructor taAppender");
}
protected void subAppend(LoggingEvent event){
taLog.append(getLayout().format(event));
taLog.setCaretPosition( taLog.getDocument().getLength() );
}
}
The JScrollPane is public so it can referenced to add it to a JPane.
Everything worked smoothly... until my boss decided "to multithread" the
process.
So now the app creates several threads on startup, and I want a
taAppender per thread, every of them with it own ScrollTA, added to the
main app JTabbedPane.
The problem is that the taAppender is only instantiated once, and
everytime I reference its scrollTA it is the one created the very first
time.
So my question is: How can I get a new instance of my appender, in a
different logger per thread (to get as many loggers as threads) and be
able to add these to main app panel?
bear in mind that besides this thread independent taAppender, I will
probably need a filelog per thread and a console shared log, too.
I've been reading some clues about using ThreadLocal and/or
LoggerFactory, but I have not been able to find any good example on the
subject.
Any advice will be greatly appreciated.
Thanks in advance.
--
Un Saludo,
Raúl Santiago Gómez
Virtual Software S.L.
[EMAIL PROTECTED]
"El programador crea aplicaciones a prueba de tontos; Dios crea tontos a prueba de
programadores"
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]