一、日志采集综合案例
### --- 日志采集综合案例
~~~ [日志采集案例之需求分析]
~~~ [日志采集案例之调度功能实现]
~~~ [日志采集案例之调度功能实现]
~~~ [日志采集之采集上传功能实现]
~~~ [日志采集案例之验证及调优]
### --- 需求分析
~~~ 定时采集已滚动完毕日志文件
~~~ 将待采集文件上传到临时目录
~~~ 备份日志文件
二、代码实现:创建工程
### --- pom文件
<!-- hadoop-common , hadoop-client, hadoop-hdfs-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.9.2</version>
<scope>test</scope>
</dependency>
</dependencies>
三、代码实现:优化
### --- LogCollector
package com.yanqi.collect;
import java.util.Timer;
public class LogCollector {
/*
- 定时采集已滚动完毕日志文件
- 将待采集文件上传到临时目录
- 备份日志文件
*/
public static void main(String[] args) {
Timer timer = new Timer();
//定时采集任务的调度
// task:采集的业务逻辑
//延迟时间
//周期时间
timer.schedule(new LogCollectorTask(), 0, 3600*1000);
}
}
### --- LogCollectorTask
package com.yanqi.collect;
import com.yanqi.common.Constant;
import com.yanqi.singlton.PropTool2;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.TimerTask;
public class