在做项目时需要把log4j的输出转到GUI上的一个文本框,在同学的帮助下得知可以自己继承AppenderSkeleton类而实现自己对输出的任何控制。但上网搜索却无所得,所以把经验共享一下。
AppenderSkeleton有一个抽象方法:

protected abstract void append(LoggingEvent event)

继承该类并实现这个方法,LoggingEvent.Message中即是输出的字符串,来参考一下WriterAppender的实现:

protected void subAppend(LoggingEvent event) {
  this.qw.write(this.layout.format(event));

  if (layout.ignoresThrowable()) {
    String[] s = event.getThrowableStrRep();

    if (s != null) {
      int len = s.length;

      for (int i = 0; i < len; i++) {
        this.qw.write(s[i]);
        this.qw.write(Layout.LINE_SEP);
      }
    }
  }

  if (this.immediateFlush) {
    this.qw.flush();
  }
}

可以看到主要就是this.qw.write(this.layout.format(event));这一行。反正主要的信息都在event里,需要什么都可以从中去取。
写好自已的类后就可以在log4j.properties配置文件中把log4j.appender的值赋为该类名。然后log4j启动读入配置文件就会使用自定义的Appender了!

转载于:https://www.cnblogs.com/wonderow/archive/2005/05/18/158554.html

在log4j中使用自定义的Appender相关推荐

  1. java emr_java – EMR – 在Hadoop(和YARN)中使用自定义日志记录appender

    在我们的EMR集群中,我们使用自定义log4j-appender和log4j.properties来允许我们将日志转发到Splunk并让我们做一些魔术,提供的库和配置不知道如何操作. 在EMR 3.x ...

  2. Log4j扩展使用--自定义输出

    写在前面的话 log4j支持自定义的输出.所有的输出都实现了自Appender接口.一般来说,自定义输出值需要继承AppenderSkeleton类,并实现几个方法就可以了. 写这篇博客,我主要也是想 ...

  3. log4j中调试与错误日志分开_Log4j 配置

    我们可以通过设置Log Level,定义Appender和在配置文件中指定Layout对象来配置log4j. log4j.properties 文件是一个log4j配置文件,它保留键 - 值对中的属性 ...

  4. log4j中配置日志文件相对路径方法

    提醒:本文并不是本人的原创,转载自 http://www.zxbc.cn/html/20080402/33022_4.html ,将原文中的代码和读取来别扭的语句略作修改以使读者更容易理解作者的意思, ...

  5. 自主数据类型:在TVM中启用自定义数据类型探索

    自主数据类型:在TVM中启用自定义数据类型探索 介绍 在设计加速器时,一个重要的决定是如何在硬件中近似地表示实数.这个问题有一个长期的行业标准解决方案:IEEE 754浮点标准.1.然而,当试图通过构 ...

  6. [Flash开发笔记] 如何在as2.0中使用自定义类事件

    as2编程中,我们通常要处理一些异步加载的数据,有点类似ajax中的callback,即我们不知道何时数据才会返回,并且只有当数据返回时,执行我们定义的操作.     在flash6及以前,我们会常常 ...

  7. react 错误边界_React with GraphQL和错误边界中的自定义错误页面

    react 错误边界 by Abi Noda 通过Abi Noda React with GraphQL和错误边界中的自定义错误页面 (Custom error pages in React with ...

  8. python中matplotlib自定义设置图像标题使用的字体类型:获取默认的字体族及字体族中对应的字体、自定义设置图像标题使用的字体类型

    python中matplotlib自定义设置图像标题使用的字体类型:获取默认的字体族及字体族中对应的字体.自定义设置图像标题使用的字体类型 目录

  9. FineReport中如何自定义登录界面

    在登录平台时,不希望使用FR默认的内置登录界面,想通过自定义登录界面实现登录操作,内置登录界面如下图: 登录界面,获取到用户名和密码的值,发送到报表系统,报表服务带着这两个参数访问认证地址进行认证. ...

最新文章

  1. SQL查询月初与月末时间
  2. io流文本文档的快速读取
  3. 入行十年,总结出了数据仓库、数据集市、数据库的精华,你一定不能错过
  4. loadrunner-2-9添加事务
  5. 【CF1312E】Array Shrinking(dp)
  6. postgresql和mysql语句区别_postgresql和mysql语句区别
  7. FastReport 安装方法
  8. 【解题报告】CF练一下题 | 难度CF2500左右
  9. 网络编程工程实训(DVB+CentOS+libpcap+分析帧格式)
  10. webx3对请求的处理流程详解一
  11. x64dbg安装xAnalyzer插件失败问题解决
  12. 信号与系统2-连续离散系统时域分析
  13. EXCEL怎么隔3行插入1空行?
  14. 矩型窗、哈明窗、汉宁窗、莱克曼窗等一系列函数
  15. ubuntu 12.04 从硬盘安装过程
  16. 什么造就了中国的XP系统依赖症
  17. 【Axure高保真原型】日期时间选择器
  18. android8 Camera2 从 CameraService 到 HAL Service
  19. [Swift]LeetCode1135. 最低成本联通所有城市 | Connecting Cities With Minimum Cost
  20. CSR8670的UART功能的应用笔记

热门文章

  1. MySQL 使用 LOAD DATA 导入 csv 文件
  2. MongoDB 性能瓶颈分析
  3. 查看修改Linux时区和时间
  4. 久坐的危害和解决方式
  5. Python 爬起数据时 'gbk' codec can't encode character '\xa0' 的问题
  6. 如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展
  7. 自己编写jQuery插件之表单验证
  8. iOS 7.1 arm64 编辑报错 警告解决办法
  9. “63个国外优秀测试站点链接”和其他相关资料,排除了目前已失效的网站和资料链接。...
  10. 屏幕录像 Camstudio