Flume集成logback将日志写入HDFS

Flume集成logback将日志写入HDFSFlume 集成 logback 将日志写入 HDFSFlume 配置文件 Kafka 代替 FlumeChannel SpringBoot logback 集成 Flume 测试 Flume 配置文件 Kafka 代替 FlumeChannel flume test conf properties 组件命名 a1 sources r1a1 sinks k1a1 channels c1 sourcea1 sources r1 type avroa1 sources r1 bind 0

Flume 配置文件(Kafka代替Flume Channel)

  • flume-test-conf.properties
# 组件命名 a1.sources = r1 a1.sinks = k1 a1.channels = c1 # source a1.sources.r1.type=avro a1.sources.r1.bind=0.0.0.0 a1.sources.r1.port=44444 #指定hdfs sink a1.sinks.k1.type = hdfs #hdfs目录,带有时间信息 a1.sinks.k1.hdfs.path = /flume/tailout/%Y-%m-%d/%H/ #生成的hdfs文件名的前缀 a1.sinks.k1.hdfs.filePrefix = events- #指定滚动时间,默认是30秒,设置为0表示禁用该策略 a1.sinks.k1.hdfs.rollInterval = 3600 #指定滚动大小,设置为0表示禁用该策略 a1.sinks.k1.hdfs.rollSize =  #指定滚动条数 a1.sinks.k1.hdfs.rollCount = 0 a1.sinks.k1.hdfs.batchSize = 100 a1.sinks.k1.hdfs.useLocalTimeStamp = true #副本策略 a1.sinks.k1.hdfs.minBlockReplicas=1 #生成的文件类型,默认是Sequencefile,可用DataStream,则为普通文本 a1.sinks.k1.hdfs.fileType = DataStream # 指定Kafka替换Channel a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel a1.channels.c1.kafka.bootstrap.servers = kafka:9092 a1.channels.c1.kafka.topic = flume_channel_test a1.channels.c1.kafka.consumer.group.id = flume-consumer-against_cheating_01 a1.channels.c1.kafka.consumer.timeout.ms = 70000 a1.channels.c1.kafka.consumer.request.timeout.ms = 80000 a1.channels.c1.kafka.consumer.fetch.max.wait.ms=7000 a1.channels.c1.kafka.consumer.offset.flush.interval.ms = 50000 a1.channels.c1.kafka.consumer.session.timeout.ms = 70000 a1.channels.c1.kafka.consumer.heartbeat.interval.ms = 60000 a1.channels.c1.kafka.consumer.enable.auto.commit = false a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # 组件绑定 a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 

Spring Boot + logback集成Flume

Flume作为一个采集工具,它除了可以自行监控日志文件,也可以配合logback实现日志直接打印到Flume中。

  • Maven新增Flume依赖
 
   
   
     com.teambytes.logback 
    
   
     logback-flume-appender_2.10 
    
   
     0.0.9 
    
   
  • logback配置
    springboot项目中resources文件夹下新增logback-spring.xml配置文件,内容如下

 
    <configuration> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyy MMM dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n  
     pattern>  
      encoder>  
       appender>  
       <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">  
       <file>log/logFile.log 
        file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
         
        <fileNamePattern>log/logFile.%d{yyyy-MM-dd}.%i.log  
         fileNamePattern>  
          
          
         <MaxHistory> 7  
          MaxHistory>  
          <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>5MB 
           maxFileSize>  
            timeBasedFileNamingAndTriggeringPolicy>  
             rollingPolicy> <encoder> <pattern>%d{yyy MMM dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n  
              pattern>  
               encoder>  
                appender>  
                <appender name="flumeTest" class="com.teambytes.logback.flume.FlumeLogstashV1Appender">  
                <flumeAgents> localhost:44444  
                 flumeAgents> <flumeProperties> connect-timeout=4000; request-timeout=8000  
                  flumeProperties> <batchSize>100 
                   batchSize> <reportingWindow>1000 
                    reportingWindow> <additionalAvroHeaders> myHeader = myValue  
                     additionalAvroHeaders> <application>JustryDeng's Application 
                      application> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - \(%file:%line\) - %message%n%ex 
                       pattern>  
                        layout>  
                         appender>  
                         <logger name="com" level="info"> <appender-ref ref="flumeTest"/>  
                          logger> <root level="info"> <appender-ref ref="consoleAppender"/>  
                           root>  
                            configuration> 
  • 测试代码
@SpringBootApplication @Controller @EnableScheduling public class AppRun { 
    private static final Logger LOGGER = LoggerFactory.getLogger(AppRun.class); public static void main(String[] args) { 
    SpringApplication.run(AppRun.class, args); } @Scheduled(cron = "0/5 * * * * ?") public void printLog() { 
    LOGGER.info("我是一条日志"); } } 

测试

  • 先启动Flume
# 切换至Flume Home文件夹下执行 bin/flume-ng agent --conf-file conf/flume-test-conf.properties -name a1 -Dflume.root.logger=INFO,console 
  • 启动SparingBoot项目
    在这里插入图片描述

  • 查看HDFS对应文件
    在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229677.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:08
下一篇 2026年3月16日 下午4:09


相关推荐

  • tomcat日志乱码怎么解决_log4j日志乱码

    tomcat日志乱码怎么解决_log4j日志乱码1.首先打开tomcat的conf目录下的logging.properties根据编译码去切换,例如你的编译器是utf-8的话,你就可以不用改(里面默认的是utf-8),如果你的编译器是GBK的话,那就把utf-8全部替换成GBK。2.idea设置-Dfile.encoding=UTF-8接着打开help的VMOptions最后重启idea就可以啦!…

    2026年4月14日
    9
  • 历时三个月,史上最详细的Spring注解驱动开发系列教程终于出炉了,给你全新震撼

    历时三个月,史上最详细的Spring注解驱动开发系列教程终于出炉了,给你全新震撼写在开头从 2020 年 11 月 27 日到今天 即 2021 年 3 月 21 日 为止 历时接近三个月 我写的 史上最详细的 Spring 注解驱动开发系列教程 终于新鲜出炉了 好嗨哟 我实在是太开心了 因为每一篇文章我都花费了大量的时间 精力和心血 一篇文章写下来 少则 3 4 个小时 多则 3 4 天 我实在是太难了 整个系列教程 我是总共分为了五大部分 分别是 IOC 容器 AOP 切面 声明式事务 扩展原理和 web 相关 大部分内容都是以实战为主 期间我也适当的讲解了 Spring 的底层原理和源码相关的知识 尤其是在研究 AOP 底层原

    2026年3月17日
    2
  • 415错误及解决方法

    415错误及解决方法出现 415 错误的解决方法 nbsp 1 前端看 ajax 请求的 contentType 是否与后端一致 nbsp 2 看发送的数据格式是否正确 functiongetA data ajax url algor api datadirs type POST contentType applica

    2026年3月17日
    2
  • method exists php,浅谈php method_exists检测类中是否包括函数

    method exists php,浅谈php method_exists检测类中是否包括函数php教程method_exists检测类中是否包括函数?或许有些人不是很明白其中道理,下面做如下详细分析。method_exists()函数的语法如下:boolmethod_exists(objectobject,stringmethod_name)method_exists()函数的作用是检查类的方法是否存在。如果method_name所指的方法在object所指的…

    2022年7月15日
    18
  • Linux如何切换到root用户(linux禁止用户切换root)

    Linux如何切换到root用户(linux禁止用户切换root)1.首先,我们输入pwd命令,查看当前用户目录:当前用户是xg其中我解释一下[xg@localhost~]$ 这个的含义,其中xg指的是当前的用户,localhost指的是本机服务,~指的是当前目录,后面的$符号指的是普通用户,如果是root用户的话,就会变成下图这样,其中的#符号指的就是root用户:2.这时我们分别输入su xg和su-,如下图所示:输入suxg命

    2022年4月18日
    189
  • linux的sh文件怎么执行,linux下执行sh文件的四种做法

    linux的sh文件怎么执行,linux下执行sh文件的四种做法https blog csdn net Touch Dream article details 四中方法方法一 切换到 shell 脚本所在的目录 此时 称为工作目录 执行 shell 脚本 代码如下 cd data shell hello sh 的意思是说在当前的工作目录下执行 hello sh 如果不加上 bash 可能会响应找到不到 hello sh 的错误信息 因为目前的工作

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号