将Log4J写入jTextArea
我是一个没有经验的Java开发人员,编写的应用程序正在处理备份 我的应用程序打开一个gui(使用NetBeans模板编写的StepTwoBackup),它从用户那里收集一些信息,然后当我按下“下一步”按钮时,gui将这些信息传递给一个对象(BackupRestore,它使用Log4J记录所有操作),然后打开另一个窗口(StepTwoBackup)并将对象传递给它 在这个新窗口(StepThreeBackup)中,我自动在传递的对象(BackupRestore.execute())上启动一个方法来执行备份。 在最后一个窗口(StepThreeBackup)中,我创建了一个JTextArea,我想在其中显示Log4J的输出(它当前写入日志文件并输出到控制台) 有办法做到这一点吗?我读过应该使用appender的文章,但我不知道如何正确地使用appender 目前,我在工作日志4j属性文件中创建了以下条目:将Log4J写入jTextArea,log4j,jtextarea,appender,Log4j,Jtextarea,Appender,我是一个没有经验的Java开发人员,编写的应用程序正在处理备份 我的应用程序打开一个gui(使用NetBeans模板编写的StepTwoBackup),它从用户那里收集一些信息,然后当我按下“下一步”按钮时,gui将这些信息传递给一个对象(BackupRestore,它使用Log4J记录所有操作),然后打开另一个窗口(StepTwoBackup)并将对象传递给它 在这个新窗口(StepThreeBackup)中,我自动在传递的对象(BackupRestore.execute())上启动一个方法来
<appender name="guiAppender" class="BackupAppGui.StatusMessageAppender">
<param name="Threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n"/>
</layout>
</appender>
但是没有任何内容写入jTextArea
我做错了什么?有人能帮我解决这个问题吗?感谢您能为我提供的所有帮助。您需要确保JTextArea的实例不是
null
。Yoy可以尝试以编程方式添加appender(例如,在创建组件后在StepThreeBackup
的构造函数中):
不要忘记删除
log4j.xml文件中的条目。谢谢!!!!!我环顾四周好几天,最后我几乎准备放弃,直接从日志文件导入文本,你救了我的命!!!它工作得很好,我只更改了StatusMesageAppender类的构造函数,包括对将保存消息的JTextArea的引用,一切都很好!非常感谢。不客气。不要忘记,如果一个答案令人满意地解决了你的问题,你可以。;-)
/**
*
* @author MSTPA
*/
import javax.swing.JTextArea;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggingEvent;
public class StatusMessageAppender extends AppenderSkeleton {
private final JTextArea jTextA;
public StatusMessageAppender() {
jTextA = StepThreeBackup.getJTextA();
}
protected void append(LoggingEvent event)
{
if(event.getLevel().equals(Level.INFO)){
jTextA.append(event.getMessage().toString());
}
}
public void close()
{
}
public boolean requiresLayout()
{
return false;
}
}
StatusMessageAppender appender = new StatusMessageAppender();
LogManager.getRootLogger().addAppender(appender);