Log4j自定义Appender

log4j 环境包括三个主要组件:

logger(日志记录器): 控制要启用或者禁用哪些日志记录语句。可以对日志记录器制定如下级别:

  ALL、DEBUG、INFO、WARN、ERROR、FATA、OFF。

layout(布局):根据用户的愿望格式化日志记录请求。

appender:向目的地发送格式化的输出。log4j自带了还记中appender如下:

  1. ConsoleAppender
  2. FileAppender
  3. SMTPAppender
  4. JDBCAppender
  5. JMSAppender
  6. NTEventAppender
  7. SyslogAppender

也可以创建自定义的Appender

******************************************************华丽的分割丰富********************************************************************************

创建自定义的Appender

1. 继承AppenderSkeleton类,实现三个方法(也可以继承已有的Appender,重写某些方法,实现需要的逻辑)

public class SimpleAppender extends AppenderSkeleton {
  //在log4j.xml中配置需要的属性,此处可以注入
    private String developer;

    @Override
    protected void append(LoggingEvent loggingEvent) {     //自定义输出什么
        System.out.println("=========" + developer + "Test===========" + loggingEvent.getMessage());
    }

    @Override
    public boolean requiresLayout() {     //是否需要布局,如果返回false,即使log4j.xml配置了layout也不生效。
        return false;
    }

    @Override
    public void close() {    //释放资源
    this.closed = true;
    }

    public String getDeveloper() {
        return developer;
    }

    public void setDeveloper(String developer) {
        this.developer = developer;
    }

2.配置log4j.xml

<!--自定义Appender-->
    <appender name="simpleAppender" class="com.cn.simple.logger.SimpleAppender">
        <param name="developer" value="lqw"></param>
    </appender>

3.执行

        logger.info("[springDemo]--------info信息");
        logger.warn("[springDemo]--------warn提醒");
        logger.error("[springDemo]--------error异常");    

4.输出结果

=========lqwTest===========[springDemo]--------info信息
=========lqwTest===========[springDemo]--------warn提醒
=========lqwTest===========[springDemo]--------error异常

参考文档:

http://www.360doc.com/content/16/0121/16/14567867_529569233.shtml

log输出到frame参考:

http://zhangjunhd.blog.51cto.com/113473/48895/

时间: 2024-10-26 04:17:36

Log4j自定义Appender的相关文章

Log4j自定义Appender介绍

最初想要在执行一段业务逻辑的时候调用一个外部接口记录审计信息,一直找不到一个比较优雅的方式,经过讨论觉得log4j自定义的appender或许可以实现此功能.后来就了解了一下log4j的这部分. Apache Log4j 架构 Apache Log4j是当前在J2EE和J2SE开发中用得最多的日志框架(几乎所有项目都用它),因为它具有出色的性能.灵活的配置以及丰富的功能,并且在业务有特殊的要求时,可以使用自定义组件来代替框架中已有的组件来满足要求. log4j组件介绍 Log4j主要有三个组件:

自定义log4j的appender写es日志

本篇和大家分享的是自定义log4j的appender,用es来记录日志并且通过kibana浏览es记录:就目前互联网或者一些中大型公司通常会用到第三方组合elk,其主要用写数据到es中,然后通过可视化工具kibana来做直观数据查看和统计:本篇内容节点如下: docker快速搭建es,es header,kibana 环境 封装写es工具类 自定义log4j的appender kibana基础使用 docker快速搭建es,kibana,es header 环境 对于爱研究第三方服务的程序员来说

Log4j2 - Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFileAppender for element RollingFile

问题与分析 在使用Log4j2时,虽然可以正确读取配置文件并生成log文件,但偶然发现控制台打印了异常信息如下: 2018-12-31 17:28:14,282 Log4j2-TF-19-ConfiguratonFileWatcher-6 ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile:

Log4j自定义生成文件的名称

我们在使用Log4j的RollingFileAppender循环生成文件的时候,生成的文件的名称有点儿恶心,例如,文件名称为app.log,那么生成的文件名依次为app.log.1,app.log.2,.... 那么如何去改变生成文件的名称的规则呢?下面是一个简单示例: 1,log4j.properties log4j.logger.major= INFO, majorMsg log4j.additivity.logError = false log4j.appender.majorMsg=co

通过java代码给log4j指定appender

工具代码 import org.apache.log4j.ConsoleAppender; import org.apache.log4j.LogManager; import org.apache.log4j.PatternLayout; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LogUtil { public static final Logger LOGGER = LoggerFactory

Log4J学习【二十三】常用的Appender之SocketAppender

前面这几个Appender就是Log4J提供的基于文件系统的Appender.当然,在一些特殊的需要记录到文件的Appender来说,我们只需要选择一个合适的Appender来继承并完成自己的逻辑即可.关于自定义Appender,待会再看.下面来看几个比较特殊的Appender. 前面所有介绍的Appender都有一个共同的特点,就是他们都需要配置一个Layout对象,下面要介绍的这个Appender非常特殊,他本身不需要任何Layout对象,这个Appender就是SocketAppender

Log4J日志配置详解和自定义log4j日志级别及输出日志到不同文件实现方法

Log4J日志配置详解 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN <

log4j properties配置

log4j.rootLogger=DEBUG,console,dailyFile log4j.additivity.org.apache=true # 控制台(console) log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Threshold=DEBUG log4j.appender.console.ImmediateFlush=true log4j.appender.console.

LOG4J

 Log4j介绍 Log4j由三个重要的组件构成:日志信息的优先级 priority,日志信息的输出目的地Appender,日志信息的输出格式(布局)layout. 1.日志的优先级, 从低到高,依次有:DEBUG,INFO,WARN,ERROR,分别用来指定这条日志信息的重要程度:如果定义了了输入的级别为INFO,则只有等于及高于这个级别的才进行处理,此时将输入INFO,WARN,ERROR.值得注意的是,级别中还有两个关键字, ALL:打印所有的日志, OFF:关闭所有的日志输出. 2.输出