OneCoder Avatar
OneCodercoderli.com · 955 篇博文
{ } Java

Java 服务端架构

Spring、Netty、日志框架与工程化实战

🎨 视觉封面

log4j自定义appender实现,处理异常堆栈

📅 2013-10-12·✍️ onecoder·计算中...·⏱️ 2 分钟
#Log4j

在项目中需要自定义实现一个log4j的appender。根据log中MDC里的信息,构造日志存储的目录结构。自定义实现log4j appender的方法已经介绍过了。主要是覆盖AppenderSkeleton中的appender方法。

JAVA
@Override
      protected void append(LoggingEvent event) {
           this .logEvent = event;
     }

日志内容的获取和格式处理,通过Layout进行格式化

JAVA
this .getLayout().format(event).getBytes( DEFAULT_CS )

这里有个问题,一般情况下,我们常用的org.apache.log4j.PatternLayout是不会处理异常堆栈的。因为,其内部的方法,返回的是true。

JAVA
public  boolean ignoresThrowable () {
    return true ;
  }

在这种情况,如果你的日志里有异常对象,如logger.error("错误信息。", e) 那么e将会被忽略。这时候需要我们自己处理。处理方式如下:

JAVA
if (layout .ignoresThrowable()) {
      String[] s = event.getThrowableStrRep();
      if (s != null ) {
      int len = s. length;
      for( int i = 0; i < len; i++) {
           // 处理异常堆栈,比如记录到日志文件中
     }
💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!