Configurar log4j e contar a exibicao dos INFOs no console
1 resposta
C
crfalconi
Olá a todos.
Eu estou implementando uma tela de login para uma aplicação que utiliza o hibernate.
Eu gostaria de apresentar um JProgressBar com a porcentagem (JProgressBar sem o setIndeterminate) referente a iniciação da minha SessionFactory.
Eu estou usando para isso o SwingWorker, mas para passar o % teria que usar:
setProgress(Math.round((float) i / n * 100) onde
i : poderia ser cada INFO do log4j que exibe no console quando inicia a SessionFactory.
n : total de INFOs que são apresentados quando inicia a SessionFactory.
A minha dúvida é como posso “contar” os INFOs que são exibidos quando inicia o Hibernate ?
Como configurar o log4j para isso ?
publicclassJFrameAppenderextendsjavax.swing.JFrame{privateJPaneljPanel1;privateJButtonjBtnConsulta;privateJProgressBarjPrgBar;privateJPaneljPanelDentro;privateSessionsessao=null;privateMyAppenderappender;privatestaticfinalLoggerlogger=Logger.getLogger(Main.class);publicstaticvoidmain(String[]args){JFrameAppenderinst=newJFrameAppender();inst.setLocationRelativeTo(null);inst.setVisible(true);}privatevoidinitLogger(){appender=newMyAppender(jPrgBar);Logger.getRootLogger().addAppender(appender);logger.info("Log inicializado");}publicvoidexecuteAction(){Runnablerunnable=newRunnable(){publicvoidrun(){try{//abre e fecha uma sessao numa thread fora da thread de HibernateUtilsessao=HibernateUtil.getSession();sessao.close();appender.finalize();}catch(Exceptione){System.out.println("Erro Runnable "+e.getMessage());}}};Threadthread=newThread(runnable);thread.start();}publicJFrameAppender(){super();initGUI();initLogger();executeAction();}privatevoidinitGUI(){try{setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);{jPanel1=newJPanel();BorderLayoutjPanel1Layout=newBorderLayout();jPanel1.setLayout(jPanel1Layout);getContentPane().add(jPanel1,BorderLayout.CENTER);{jPanelDentro=newJPanel();jPanel1.add(jPanelDentro,BorderLayout.CENTER);jPanelDentro.setPreferredSize(newjava.awt.Dimension(384,232));jPanelDentro.setLayout(null);}{jPrgBar=newJProgressBar();jPrgBar.setStringPainted(true);jPanel1.add(jPrgBar,BorderLayout.NORTH);jPrgBar.setPreferredSize(newjava.awt.Dimension(384,31));}}pack();setSize(400,300);}catch(Exceptione){e.printStackTrace();}}}