7-log4j2之自定义Appender】的更多相关文章

1.背景 虽然log4j很强大,可以将日志输出到文件.DB.ES等.但是有时候确难免完全适合自己,此时我们就需要自定义Appender,使日志输出到指定的位置上. 本文,将通过两个例子说明自定义APPender,一个是将日志写入文件中,另一个是将日志发送到远程Thrift服务中. 本文代码详见:https://github.com/hawkingfoo/log-demo 2.自定义文件Appender 2.1 定义文件Appender 先上代码:   @Plugin(name = "FileAp…
一.简述 本文主要讲如何基于Log4j2来实现自定义的Appender.一般用途是用于Log4j2自带的Appender不足以满足我们的需求,或者需要我们对日志进行拦截统计等操作时,需要我们自定义Appender. 二.自定义Appender 方法:实现一个类,让它继承自Log4j2的AbstractAppender,然后你重写其append方法,并添加一个@PluginFactory标记的createAppender方法. 举例:例如,我们要实现一个通过日志输出的Level来统计计数来实现监控…
一.添加Maven依赖 <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId&g…
前言 前面两章节我们介绍了一些日志框架的常见配置及使用实践.一般上,在开发过程中,像log4j2.logback日志框架都提供了很多Appender,基本上可以满足大部分的业务需求了.但在一些特殊需求或者需要将日志进行集中管理(集群部署时,日志是分拆到不同服务器上的,不可能去每一台服务器上去下载文件的,也不便于日志检索)时,就需要自定义Appender,将日志集中输出或者其他一些特殊需求.所以本章节就来简单介绍下关于log4j2和logback的自定义Appender知识. 一点知识 log4j…
最近有个需求,使用log4net来记录日志,然后将数据保存到服务器端.一开始打算写一个windows service,定期上传日志. 后来又因为一些场景下不适应,因此直接改为保存内存中,到一定阀值之后将数据post到服务器. 考虑用log4net的MemoryAppender,但是没办法控制这个阀值,同时还需要另外配置服务器接受数据地址. 因此也不适用,还好log4net支持自定义Appender,于是,参考MemoryAppender,自定义一个,问题解决. 下面是Appender代码. //…
Log4j2配置之Appender详解 Appender负责将日志事件传递到其目标.每个Appender都必须实现Appender接口.大多数Appender将扩展AbstractAppender,它添加了生命周期和可过滤的支持.生命周期允许组件在配置完成后完成初始化,并在关闭期间执行清理.Filterable允许组件附加过滤器,在事件处理期间对其进行评估. Appender通常只负责将事件数据写入目标目标目标.在大多数情况下,它们将格式化事件的责任委托给布局.一些appender包装其他App…
转自:http://gemantic.iteye.com/blog/1234996 最初想要在执行一段业务逻辑的时候调用一个外部接口记录审计信息,一直找不到一个比较优雅的方式,经过讨论觉得log4j自定义的appender或许可以实现此功能.后来就了解了一下log4j的这部分. Apache Log4j 架构 Apache Log4j是当前在J2EE和J2SE开发中用得最多的日志框架(几乎所有项目都用它),因为它具有出色的性能.灵活的配置以及丰富的功能,并且在业务有特殊的要求时,可以使用自定义组…
功能需求 项目里将User分成了各个区域(domain),这些domain有个标志domainId,现在要求在打印日志的时候,不仅将所有User的日志都打印到日志文件logs/CNTCore.log中,还需要另外再打印到对应domain的日志文件logs/{domainId}/CNTCore.log. 比如User A的domainId是RD2,那么除了logs/CNTCore.log外,还需要将该User A的日志额外打印到logs/RD2/CNTCore.log中. 实现思路 将所有User…
最初想要在执行一段业务逻辑的时候调用一个外部接口记录审计信息,一直找不到一个比较优雅的方式,经过讨论觉得log4j自定义的appender或许可以实现此功能.后来就了解了一下log4j的这部分. Apache Log4j 架构 Apache Log4j是当前在J2EE和J2SE开发中用得最多的日志框架(几乎所有项目都用它),因为它具有出色的性能.灵活的配置以及丰富的功能,并且在业务有特殊的要求时,可以使用自定义组件来代替框架中已有的组件来满足要求. log4j组件介绍 Log4j主要有三个组件:…
粗糙笔记,留着备用. 三个基本款分别是ConsoleAppender.FileAppender(以及他的堂哥RandomAccessFileAppender).RollingFileAppender(以及他的堂哥RollingRandomAccessFileAppender),其中RollingFileAppender是三个appender中的大哥大,因为他一个人的文档篇幅就是其它两个appender文档篇幅总和的6~7倍左右... 关于三个appender的简单介绍: <?xml versio…
log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量.可配置的审计型日志.基于插件架构的各种灵活配置等.如果已经掌握log4j 1.x,使用log4j2还是非常简单的. 先看一个示例 1 基础配置 普通java项目手动添加jar包 log4j-api-2.5.jar log4j-core-2.5.jar Maven项目pom.xml <dependencies> <dependency> <g…
序:这段时间因为维护的项目存在大量日志打印,严重拖慢整体响应时间,在做性能优化的工作中对这块内容进行了升级换代,由以前的log4j升级为log4j2,以实现日志异步打印.接下来记录一下这个费时半个月的迁移踩过的坑! 相关操作步骤: 1. 在项目中移除log4j的依赖,并添加log4j2的相关依赖.(选择log4j2的版本时请留意,2.10.x之后的版本是基于java9的!如果有使用到某些特性,请考虑当前项目的jdk版本!) <dependency> <groupId>org.apa…
简介 Apache Log4j 2 是Log4j 的升级版,在该版本实现中,日志的处理流程及效率有了显著提升. 此外新版本也合入了一些logback日志框架体系的一些改进点. 关键特性 API分离,接口与实现分离,便于扩展 性能提升,框架基于LMAX Disruptor库实现了下一代的 Asynchronous Loggers.在多线程场景下相比log4j1.x和logback有将近18倍的性能提升,参考几近疯狂的log4j2,关于异步的参考 支持多API,包括Log4j 1.2, SLF4J,…
一.背景 1. log4j2传承于log4j和logback,它是目前性能最好的日志处理工具,有关它们的性能对比请看: 2. 除了性能好之外,log4j2有这么几个重要的新features: (1) 自动热重载配置文件,而且重新加载期间不会丢失日志请求.logback也可以热重载配置文件,但是它在重新加载期间会丢失请求: (2) 用插件代替code style的自定义appender: (3) 支持异步日志,至于异步日志的性能,请参考官方评测: 由此可见,log4j2的性能优势就体现在异步日志上…
现在公司用log4j2 进行日志记录,我也看了相关的资料,现在进行记录学习总结下 整体结构 Appenders里设置日志的输出方式.级别和格式 Loggers里设置全局的级别和绑定appenders里的name 简单代码demo 加载依赖 登录官网,找到maven依赖 <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-…
一.供参考的完整日志配置 <?xml version="1.0" encoding="UTF-8"?> <!-- 配置LoggerConfig,即Appenders的日志级别为WARN --> <Configuration status="WARN"> <!-- 定义下面的引用名 --> <Properties> <property name="basePath"…
1.进阶说明 本文介绍Log4j2进阶使用, 基本使用请参考Log4j2基本使用入门. 本文基于上面的基本使用入门, 主要介绍按照日志大小和时间备份日志, 并且限制备份日志的个数, 以及删除过期的备份日志. 由于日志信息是不断追加到日志文件的, 经过一段时间会导致日志文件很大, 所以需要及时分割过大的日志文件, 以及限制日志文件占用的硬盘空间, 及时清理掉不用的过期的日志文件. 2.RollingFileAppender RollingFileAppender能实现上面提出的需求, 它需要配置T…
一.Log4j有三个主要的组件:Loggers,Appenders和Layouts,这里可简单理解为日志级别,日志要输出的地方和日志格式 1. Logger Logger的日志级别有6级,分别是TRACE<DEBUG < INFO < WARN < ERROR < FATAL 分别按照一定的等级来表示此条日志的重要程度 2. appender常用的输出有控制台.文件.数据库等 二.Log4j2配置 1.web.xml配置文件  XML Code  1 2 3 4 5 6 7…
原文地址:http://kyfxbl.iteye.com/blog/1173788 明天要带老婆出国旅游几天,所以这段时间暂时都更新不了博客了,临走前再最后发一贴 上一篇我们说到Logger类的info()方法通过层层调用,最后委托Appender来记录日志,这篇博客我们就接着说一下,Appender组件是怎么记录日志的 实际上Appender可能是logback框架中最重要的组件之一,虽然Logger是记录日志的接口,但是如果一个Logger没有关联到任何Appender的话,那么这个Logg…
1.log4j 概述 log4j 环境包括三个主要组件: logger(日志记录器):控制要启用或禁用哪些日志记录语句.可以对日志记录器指定如下级别: ALL . DEBUG . INFO . WARN . ERROR , FATAL . layout(布局):根据用户的愿望格式化日志记录请求. appender:向目的地发送格式化的输出. 2.理解 appender log4j 框架允许向任何日志记录器附加多个 appender.可以在任何时候对某个日子记录器添加(或删除)appender.附…
这个地方,在看公司的源代码的时候,写的知识点: 现在再看,竟然不是太懂,重新写一份新的文档,外加示例说明. 一:说明 1.log4j 环境的三个主要组件: logger(日志记录器):控制要启用或禁用哪些日志记录语句.可以对日志记录器指定如下级别: ALL .DEBUG . INFO . WARN . ERROR , FATA或 OFF . layout(布局):根据用户的愿望格式化日志记录请求. appender:向目的地发送格式化的输出. 2.理解 appender log4j 框架允许向任…
Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境. 1. 配置文件 Log4J配置文件的基本格式如下: #配置根Logger log4j.rootLogger = [ level ] , appenderName1, appenderName2, … #配置日志信息输出目的地Appender log4j.appender.appenderName…
1.appender 1.什么是appender Appender 是负责写记录事件的组件. Appender 必须实现接口“ch.qos.logback.core.Appender”.该接口的重要方法总结如下:  2.AppenderBase public synchronized void doAppend(E eventObject) { // prevent re-entry. if (guard) { return; } try { guard = true; if (!this.st…
工作中,在排查线上问题时,有以下场景在不重新部署或重启服务的情况下,需要动态调整线上日志级别 1.线上有些日志打印过多干扰有用的日志,需要动态修改线上日志记录器的打印日志级别,调高一些日志级别,打印出更少的干扰日志 2.由于线上日志级别打印的相关有用日志太少,需要动态修改线上日志记录器的打印日志级别,调低一些日志级别,打印出更多的有用日志 本文的两个工具类使用的版本如下: ----------------logback--------------------- <dependency>   &…
例如:%-4relative 表示,将输出从程序启动到创建日志记录的时间 进行左对齐 且最小宽度为4格式修饰符,与转换符共同使用:可选的格式修饰符位于“%”和转换符之间.第一个可选修饰符是左对齐 标志,符号是减号“-”:接着是可选的最小宽度 修饰符,用十进制数表示.如果字符小于最小宽度,则左填充或右填充,默认是左填充(即右对齐),填充符为空格.如果字符大于最小宽度,字符永远不会被截断.最大宽度 修饰符,符号是点号"."后面加十进制数.如果字符大于最大宽度,则从前面截断.点符号“.”后面…
网上关于LOG4J的使用文章太多了,写这篇文章的目的一方面是为了回顾LOG4J的用法,一方面针对配置的使用自动将日志插入数据库,自动发送邮件,还有就是自定义输入实现.后续文章会总结下从LOG4J到LOG4J2,再到logback,从commons-logging到sl4j. 1.简单介绍 LOG4J(也就是通常所有的log4j1)是Apache软件基金会下面的一个项目,同时也是Apache Logging项目的一部分,Apache Logging包括:Apache Log4j 2,Apache…
可能做过java项目的基本上都是用过log4j,它是用来做java日志的.比如我们做一个项目分为很多的模块,那我们怎么想要知道它什么时候启动了,这时候我们可以使用log4j标记某某模块启动了. 努力的人绝对不会成为落后的标兵,加油!废话不多说,进入log4j. 一.log4j简介 1.1.log4j概述 log for java(java日志) Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记…
今天下午接触到log4j知识,花了几个小时,百度了一圈,总算是懂了一些. log4j的作用:log4j是一个日志输出的插件专门用来进行日志管理的,根据我的理解就是用来执行我们用来检测程序bug的System.out.println()语句的,不过更为简洁,格式也更好判断,利用相关的符号,可以精确到某一行的问题点. 在log4j中,我们刚开始是要利用到log4j的jar包,可以去Apache官网下载,http://www.apache.org/  ,下载后进入到到java中执行build path…
logback-spring.xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- <pattern> %d{yyyy-MM-dd HH:mm:ss} [%level] - %msg%n Logger: %logger Class: %class File: %file Caller: %caller Line: %line Message: %m M…
原文地址:https://blog.csdn.net/tianyaleixiaowu/article/details/73321610 Springboot默认集成的就是logback,logback相对来说是优秀于log4j的,log4j2也是参考了logback的设计.本篇就是来看看如何使用logback. 新建一个Springboot项目,勾选web就OK了,项目会自动集成logback. 控制台日志 写一个controller测试一下:   import org.slf4j.Logger…