把日志写入文件
先配置log4j.inf文件
log4j.rootLogger=debug,R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=.\\system.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS}(%t)] %-5p %c -%m%n
#log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}] %-5p %-x %X{user} ---- %m%n
在主程序入口加静态属性
static org.apache.log4j.Logger log = org.apache.log4j.Logger.getRootLogger();
在构造方法中执行
org.apache.log4j.PropertyConfigurator.configure("log4j.inf");
在需要输出日志的地方填加
log.info("LOG4J测试程序启动");
可以在程序目录下找到system.log内容:
[2003-11-16 16:45:06,218(AWT-EventQueue-0)] INFO root - LOG4J测试程序启动
把日志写入文件同时写入自己的界面上
例如写到JTextArea 上
首先:
写一个Appender类
package log4j;
import org.apache.log4j.*;
import org.apache.log4j.spi.*;
public class JTextAreaAppender extends AppenderSkeleton
{
javax.swing.JTextArea jText = null;
public JTextAreaAppender(Layout layout, javax.swing.JTextArea jText)
{
this.layout = layout;
this.jText = jText;
}
public JTextAreaAppender(javax.swing.JTextArea jText)
{
this.layout = new org.apache.log4j.PatternLayout("%p [%t] %c - %m%n");
this.jText = jText;
}
public void setJText(javax.swing.JTextArea jText)
{
this.jText = jText;
}
protected void append(LoggingEvent event)
{
if(this.jText == null)
return ;
this.subAppend(event);
}
public boolean requiresLayout()
{
return true;
}
public synchronized void close()
{
if (this.closed)
{
return;
}
this.closed = true;
}
public void subAppend(LoggingEvent event)
{
synchronized(jText)
{
this.jText.append(this.layout.format(event));
}
}
}
在主程序入口加静态属性
static org.apache.log4j.Logger log = org.apache.log4j.Logger.getRootLogger();
在构造方法中
org.apache.log4j.PropertyConfigurator.configure("log4j.inf");
后加
log.addAppender(new log4j.JTextAreaAppender(this.jTextArea1));
在需要输出日志的地方填加
log.info("LOG4J测试程序启动");
执行程序就可以看到了
使用中,文件感觉有置后