Log4J Appender - 将Log4J的日志内容发送到agent的source

项目中使用log4j打印的内容同时传输到flume

1、flume端

flume的agent配置内容如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

a1.sources=s1

a1.sinks=k1

a1.channels=c1

a1.sources.s1.channels=c1

a1.sinks.k1.channel=c1

a1.sources.s1.type=avro

a1.sources.s1.bind=vm1

a1.sources.s1.port=41414

a1.sinks.k1.type=logger

a1.channels.c1.type=memory

a1.channels.c1.capacity=1000

a1.channels.c1.transactionCapacity=100

启动这个agent


1

flume-ng agent --conf conf/ --conf-file conf/a1.conf --name a1 -Dflume.root.logger=INFO,console

2、java客户端

log4j.properties


1

2

3

4

5

log4j.rootLogger=INFO,flume

log4j.appender.flume = org.apache.flume.clients.log4jappender.Log4jAppender

log4j.appender.flume.Hostname = 192.168.1.111

log4j.appender.flume.Port = 41414

log4j.appender.flume.UnsafeMode = true

java测试代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

package com.test.flume;

import org.apache.log4j.Logger;

public class Log4jAppenderTest {

    public static void main(String[] args) {

        Logger logger = Logger.getLogger(Log4jAppenderTest.class);

        logger.info("test successful");

        logger.error("error");

        System.out.println("ok");

    }

}

补充:

1、负载均衡的Log4J Appender

修改log4j的配置即可:


1

2

3

log4j.rootLogger=INFO,flume

log4j.appender.flume = org.apache.flume.clients.log4jappender.LoadBalancingLog4jAppender

log4j.appender.flume.Hosts = 192.168.1.111:41414 192.168.1.111:41414

不同的host用空格分隔

2、Log4J Appender也可以使用layout,如下:


1

2

3

4

5

6

7

8

9

10

11

12

log4j.rootLogger=INFO,console,flume

log4j.appender.flume = org.apache.flume.clients.log4jappender.Log4jAppender

log4j.appender.flume.Hostname = 192.168.1.111

log4j.appender.flume.Port = 41414

log4j.appender.flume.UnsafeMode = true

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

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

log4j.appender.console=org.apache.log4j.ConsoleAppender

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

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

来自为知笔记(Wiz)

时间: 2024-10-10 15:47:07

Log4J Appender - 将Log4J的日志内容发送到agent的source的相关文章

将Log4J的日志内容发送到agent的source

项目中使用log4j打印的内容同时传输到flume 1.flume端 flume的agent配置内容如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 a1.sources=s1 a1.sinks=k1 a1.channels=c1 a1.sources.s1.channels=c1 a1.sinks.k1.channel=c1 a1.sources.s1.type=avro a1.sources.s1.bind=vm1 a1.sources.s1.port=4

Java中使用Log4j记录错误、输出日志

简介: Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程.最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码. 官方站点:http://logging.apache.org/log4j/ Log4j配置: 第一步:

log4j程序遇到错误打印日志到文件中

log4j.properties: # 定义 DEBUG 优先级, R 为日志输出目的的 log4j.rootLogger= DEBUG, R # 设置日志输出类型 , 为文件类型 log4j.appender.R= org.apache.log4j.FileAppender # 设置日志文件的位置 log4j.appender.R.file=../visitemanage/logs/logRecord.log # 每次在文件尾写入新的日志信息 log4j.appender.R.Append=

log4j:ERROR Could not find value for key log4j.appender.error

我是在rootLogger末尾加入R就好了. 最终我的配置环境如下: #设置日志的级别 ,多个以,分开(没有给出的,则不会被输出) log4j.rootLogger=info,error,R #DailyRollingFileAppender每天产生一个日志文件 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender #设置日志文件保存路径 log4j.appender.R.File=logs/backup.log #日志输出格式 l

log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.

多个classloader加载log4j时需要设置当前Thread的classloader为你自己的classloader Thread.currentThread().setContextClassLoader(classLoader); //for log4j 摘自:org.apache.log4j.helpers.Loader /** * If running under JDK 1.2 load the specified class using the * <code>Thread&

Log4j将不同Package的日志输出到不同的文件

转自:http://www.crazyant.net/1931.html 随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就存在以下这些日志: 接收外界消息的日志.对外发送消息的日志: 后台常驻线程的处理日志: 外部接口访问的参数.返回结果等接口日志: Service访问数据库产生的SQL日志: 这其中,消息日志和后台线程的日志数据量非常庞大,如果所有日志打印在一个文件中,使用tail -f log.log文件,会发现日

log4j删除N天前日志实现

基于Log4j完成定时创建和删除日志的方法 1.     背景 最近要实现定期删除N天前的日志需求: Log4j作为常用的日志生成工具,其清除日志的策略却十分有限.只有在RollingFileAppender中可以通过设置MaxFileSize和maxBackupIndex属性来指定要保留的日志文件大小以及个数,从而实现自动清除. 但是实际生产中,我们的真实的需求常常是定时每天生成一个日志文件,然后保留最近几天或近几个月的日志,历史日志需要及时清理.可是Log4j中的DailyRollingFi

通过slf4j/log4j的MDC/NDC 实现日志追踪

在分布式系统或者较为复杂的系统中,我们希望可以看到一个客户请求的处理过程所涉及到的所有子系统\模块的处理日志. 由于slf4j/log4j基本是日志记录的标准组件,所以slf4j/log4j成为了我的重点研究对象. slf4j/log4j支持MDC,可以实现同一请求的日志追踪功能. 基本思路是: 实现自定义Filter,在接受到http请求时,计算eventID并存储在MDC中.如果涉及分布式多系统,那么向其他子系统发送请求时,需要携带此eventID. 源代码:https://github.c

【转】 log4j输出多个自定义日志文件

原文链接 http://blog.csdn.net/janestone/article/details/1862678 log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况, 怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在 现有的log4j基础上稍加配置即可轻松实现这一功能. 先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志: log4j.rootLogger=DEBUG, stdout