栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何读取log4j输出到网页?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何读取log4j输出到网页?

您可以创建一个log4j追加器来写入StringWriter。这是我前一段时间做的一个例子:

consoleWriter = new StringWriter();WriterAppender appender = new WriterAppender(new PatternLayout("%d{ISO8601} %p - %m%n"),consoleWriter);appender.setName("CONSOLE_APPENDER");appender.setThreshold(org.apache.log4j.Level.ERROR);Logger.getRootLogger().addAppender(appender);

它将所有错误日志写入consoleWriter,但是您可以根据需要设置日志的范围或级别。范围(记录器名称)应该是线程的唯一标识符。像这样的东西:

Logger.getLogger("Thread-00001").addAppender(appender);

您的线程应写入此记录器。

Logger.getLogger("Thread-00001").info("blah blah blah");

当您想完成线程记录时:

Logger.getLogger("Thread-00001").removeAppender("CONSOLE_APPENDER");

更新:这是一个有效的示例。将错误日志写入文件(在log4j.xml中设置),并在启用时将所有线程日志写入StringWriter:

import java.io.StringWriter;import org.apache.log4j.Logger;import org.apache.log4j.Level;import org.apache.log4j.WriterAppender;import org.apache.log4j.PatternLayout;public class Log4jTest implements Runnable {    public static final String CONSOLE_APPENDER = "CONSOLE_APPENDER";    private static WriterAppender appender = null;    private static int counter = 1;    public static synchronized String getNextId() {        return "Thread_00"+(counter++);    }    public void run() {        String id="UNKNOWN";        try { id = getNextId(); Logger log = Logger.getLogger(id); log.addAppender(appender); log.setLevel(Level.DEBUG); log.info(id+" log message 1"); log.removeAppender(CONSOLE_APPENDER); log.info(id+" log message 2"); log.error(id+" log message 3");        } catch (Exception e) { System.out.println("Error in "+id); e.printStackTrace();        }    }    public static void main(String [] args) {        try { StringWriter consoleWriter = new StringWriter(); appender = new WriterAppender(new PatternLayout("%d{ISO8601} %p - %m%n"),consoleWriter); appender.setName(CONSOLE_APPENDER); appender.setThreshold(org.apache.log4j.Level.DEBUG); for (int i=0; i<5; i++) {     Thread t = new Thread(new Log4jTest());     t.start(); } Thread.sleep(200); System.out.println(consoleWriter.getBuffer().toString());        } catch (Exception e) { e.printStackTrace();        }    }}

这是我的log4j.xml:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration>  <appender name="FILE" >    <param name="File" value="./Log4jTest.log" />    <param name="MaxFileSize" value="1000KB" />    <param name="MaxBackupIndex" value="5" />    <layout >      <param name="ConversionPattern" value="%d{ISO8601} %p - %m%n" />    </layout>    <filter >      <param name="LevelMin" value="WARN" />      <param name="LevelMax" value="FATAL" />    </filter>  </appender>  <root>    <level value="ERROR" />    <appender-ref ref="FILE" />  </root></log4j:configuration>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号