org.apache.log4j.Logger实现用户数据收集(非系统日志收集)

以下简单现实文件生成和用户数据的写入

(一)、编写工具类

package com.web.untils;

import java.text.SimpleDateFormat;  
import java.util.Date;  

import org.apache.log4j.FileAppender;  
import org.apache.log4j.Level;  
import org.apache.log4j.Logger;  
import org.apache.log4j.PatternLayout;  


/**
 * 根据不同的日期类型,每天生成yyyyMMdd.log格式日志文件,例如/home/logs/20141111.log
 */
public class LoggerUtil {

public static Logger getLogger(Class<?> clazz) {  
 
        Logger logger = Logger.getLogger(clazz); // 生成新的Logger  
        logger.removeAllAppenders(); // 清空Appender,特別是不想使用現存案例时一定要初始化  
        logger.setLevel(Level.INFO); // 设定Logger級別。  
        logger.setAdditivity(false); // 设定是否继承父Logger。默认为true,继承root输出;设定false后将不输出root。  
  
        FileAppender appender = new DailyRollingFileAppender(); // 生成新的Appender
        appender.setBufferedIO(true);
        appender.setBufferSize(8192);
        PatternLayout layout = new PatternLayout();  
        layout.setConversionPattern("%m%n"); // log的输出形式  
        appender.setLayout(layout);
        String fileName = DateUtils.getDateFormat("yyyyMMdd")+".log";
        //文件保存目录
        String filePath  = PropertiesUtil.getProperties("fileLocalPath")+fileName;
        appender.setFile(filePath); // log输出路径  
        appender.setEncoding("UTF-8"); // log的字符编码  
        appender.setAppend(true); // 日志合并方式: true:在已存在log文件后面追加 false:新log覆盖以前的log  
        appender.activateOptions(); // 适用当前配置  
        logger.addAppender(appender); // 将新的Appender加到Logger中  
        return logger;  
    }  
 
    public static String getTime(String format) {  
        SimpleDateFormat sdf = new SimpleDateFormat(format);  
        return sdf.format(new Date());  
    }  
  
}

(二)、数据采集入口调用

@ResponseBody
@RequestMapping("/getUserData")
public void getUserData(String json,HttpServletRequest request,HttpServletResponse response) {
Logger logger=LoggerUtil.getLogger(GatherController.class);
try{
JSONObject fromObject = JSONObject.fromObject(json);
logger.info(fromObject.toString());
}catch(Exception e){
e.printStackTrace();
}
}


(三)、最后采集到的数据如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在这个科技高速发展的时代,经历了PC时代几乎人手一台电脑,随之衍生出站长这个概念;移动互联网时代几乎人手一部智能手机,智能手机一般都会安装很多应用,目前应用呈爆发式的增长;随着产业的不断深入发展,小程序的发展也日益壮大,应用涵盖各个领域;如今一个公司就可能有多个软件应用,对于软件开发商来说,急需一套分析系统帮助软件运营,如果单独开发一个分析系统去针对一个软件进行分析的话,成本会常的大,这个成本包含开发成本以及以后的维护成本。为了解决了上述的问题,我们开发出了一套云产品:亿级动态数据统计分析系统,本系统可以支持所有的终端  (Web端、移动端、小程序端等 )数据统计,只要简单的使用sdk就可以接入我们的系统,软件开发商可以很轻松的对软件使用的情况进行监控,及时辅助公司对该软件的运营。该产品历经2年的实践,商业价值极高。本套案例是完全基于真实的产品进行开发和讲解的,同时对架构进行全面的升级,采用了全新的 Flink 架构+Node.js+Vue.js等,完全符合目前企业级的使用标准。对于本套课程在企业级应用的问题,可以提供全面的指导。Flink作为第四代大数据计算引擎,越来越多的企业在往Flink转换。Flink在功能性、容错性、性能方面都远远超过其他计算框架,兼顾高吞吐和低延时。Flink能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。也就是说同时支持流处理和批处理。Flink将流处理和批处理统一起来,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。Flink技术特点1. 流处理特性支持高吞吐、低延迟、高性能的流处理支持带有事件时间的窗口(Window)操作支持有状态计算的Exactly-once语义支持高度灵活的窗口(Window)操作,支持基于time、count、session,以及data-driven的窗口操作支持具有Backpressure功能的持续流模型支持基于轻量级分布式快照(Snapshot)实现的容错一个运行时同时支持Batch on Streaming处理和Streaming处理Flink在JVM内部实现了自己的内存管理支持迭代计算支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作,中间结果有必要进行缓存2. API支持对Streaming数据类应用,提供DataStream API对批处理类应用,提供DataSet API(支持Java/Scala)3. Libraries支持支持机器学习(FlinkML)支持图分析(Gelly)支持关系数据处理(Table)支持复杂事件处理(CEP)4. 整合支持支持Flink on YARN支持HDFS支持来自Kafka的输入数据支持Apache HBase支持Hadoop程序支持Tachyon支持ElasticSearch支持RabbitMQ支持Apache Storm支持S3支持XtreemFS课程所涵盖的知识点包括:Flink、 Node.js、 Vue.js、 Kafka、Flume、Spring、SpringMVC、Dubbo、HDFS、Hbase、Highcharts等等  企业一线架构师讲授,代码在老师指导下可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值