html日志输出,log4j自定义html输出日志

FormatHTMLLayout.java

import java.text.SimpleDateFormat;

import java.util.Date;

import org.apache.log4j.HTMLLayout;

import org.apache.log4j.Layout;

import org.apache.log4j.Level;

import org.apache.log4j.helpers.Transform;

import org.apache.log4j.spi.LocationInfo;

import org.apache.log4j.spi.LoggingEvent;

public class FormatHTMLLayout extends HTMLLayout {

public FormatHTMLLayout() {

}

protected final int BUF_SIZE = 256;

protected final int MAX_CAPACITY = 1024;

// 设置前缀

static String TRACE_PREFIX = "
";

private StringBuffer sbuf = new StringBuffer(BUF_SIZE);

String title = "hello";

public static final String TITLE_OPTION = "Title";

boolean locationInfo = true;

public String format(LoggingEvent event) {

// 如果缓冲区的容量大于最大的设置则新建一个空间

if (sbuf.capacity() > MAX_CAPACITY) {

sbuf = new StringBuffer(BUF_SIZE);

} else {

sbuf.setLength(0);

}

sbuf.append("

" + Layout.LINE_SEP);

sbuf.append("

");

sbuf.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

.format(new Date()));

sbuf.append("

" + Layout.LINE_SEP);

sbuf.append("

");

if (event.getLevel().equals(Level.FATAL)) {

sbuf.append("");

sbuf.append(Transform.escapeTags(String.valueOf(event.getLevel())));

sbuf.append("");

} else if (event.getLevel().isGreaterOrEqual(Level.WARN)) {

sbuf.append("");

sbuf.append(Transform.escapeTags(String.valueOf(event.getLevel())));

sbuf.append("");

} else {

sbuf.append("");

sbuf.append(Transform.escapeTags(String.valueOf(event.getLevel())));

sbuf.append("");

}

sbuf.append("

" + Layout.LINE_SEP);

if (locationInfo) {

LocationInfo locInfo = event.getLocationInformation();

sbuf.append("

");

sbuf.append(Transform.escapeTags(locInfo.getFileName()));

sbuf.append(':');

sbuf.append(locInfo.getLineNumber());

sbuf.append("

" + Layout.LINE_SEP);

}

sbuf.append("

");

sbuf.append(Transform.escapeTags(event.getRenderedMessage()));

sbuf.append("

" + Layout.LINE_SEP);

sbuf.append("

" + Layout.LINE_SEP);

if (event.getNDC() != null) {

sbuf.append("

"

+ "style=\"font-size : xx-small;\" colspan=\"6\" "

+ "title=\"Nested Diagnostic Context\"> ");

sbuf.append("NDC:" + Transform.escapeTags(event.getNDC()));

sbuf.append("

" + Layout.LINE_SEP);

}

String[] s = event.getThrowableStrRep();

if (s != null) {

sbuf

.append("

");

appendThrowableAsHTML(s, sbuf);

sbuf.append("

" + Layout.LINE_SEP);

}

return sbuf.toString();

}

private void appendThrowableAsHTML(String[] s, StringBuffer sbuf) {

if (s != null) {

int len = s.length;

if (len == 0)

return;

sbuf.append(Transform.escapeTags(s[0]));

sbuf.append(Layout.LINE_SEP);

for (int i = 1; i < len; i++) {

sbuf.append(TRACE_PREFIX);

sbuf.append(Transform.escapeTags(s[i]));

sbuf.append(Layout.LINE_SEP);

}

}

}

/*

* returns appropriate headers.

*/

public String getHeader() {

StringBuffer sbuf = new StringBuffer();

sbuf

.append(""-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"

+ Layout.LINE_SEP);

sbuf.append("" + Layout.LINE_SEP);

sbuf.append("

" + Layout.LINE_SEP);

sbuf.append("

" + title + "" + Layout.LINE_SEP);

sbuf.append("

sbuf.append("" + Layout.LINE_SEP);

sbuf.append("" + Layout.LINE_SEP);

sbuf.append("" + Layout.LINE_SEP);

sbuf

.append("

"

+ Layout.LINE_SEP);

sbuf

.append("

+ Layout.LINE_SEP);

sbuf.append("

" + Layout.LINE_SEP);

sbuf.append("

执行时间" + Layout.LINE_SEP);

sbuf.append("

级别" + Layout.LINE_SEP);

if (locationInfo) {

sbuf.append("

所在行" + Layout.LINE_SEP);

}

sbuf.append("

信息" + Layout.LINE_SEP);

sbuf.append("

" + Layout.LINE_SEP);

//sbuf.append("
" + Layout.LINE_SEP);

return sbuf.toString();

}

}

log4j.properties

log4j.rootLogger=DEBUG,A1,R

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=sys_ztb_log.html

log4j.appender.R.MaxFileSize=4000KB

log4j.appender.R.layout=com.test.FormatHTMLLayout

#log4j.appender.R.layout=org.apache.log4j.HTMLLayout

#log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPatton=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] %m%n

test.java

public class Test {

private static Logger logger=Logger.getLogger(aa.class);

public static void main(String[] args) {

logger.debug("This is a debug method");

logger.info("This is indo method");

logger.error("This is error");

}

}

显示效果

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值