zoukankan      html  css  js  c++  java
  • Logstash(二)模拟生成log日志,纯java【使用内部类写】

    package cn.kgc.kb08.es.log;
    
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.text.MessageFormat;
    import java.util.Random;
    import java.util.concurrent.Executor;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class LogService {
        private ExecutorService es = Executors.newFixedThreadPool(50);
        private Random rand = new Random();
        // userId
        // eventType
        private String[] eventType =
                {"visit","btn_search",
                        "btn_page","btn_add_cart",
                        "btn_make_order","btn_pay"};
        // eventMonth
        // browser
        private String[] browser = {"chrome","firefox","360","IE","猎豹"};
        // clickCount
        // timeZone
        private String[] timeZone = {"开罗","伦敦","莫斯科","新德里","北京","悉尼","温哥华"};
        private String path;
    
        public LogService() {
        }
    
        public LogService(String path) {
            this.path = path;
        }
    
        private String makeMst(){
            Object[] parts = {
                    // 1-100000的随机数
                    String.valueOf(1+rand.nextInt(10000)),
                    eventType[rand.nextInt(eventType.length)],
                    MessageFormat.format("{0}-{1}", String.valueOf(2010+rand.nextInt(11)), 1+rand.nextInt(12)),
                    browser[rand.nextInt(browser.length)],
                    1+rand.nextInt(100),
                    timeZone[rand.nextInt(timeZone.length)]
    
            };
            return MessageFormat.format("{0};{1};{2};{3};{4};{5};",parts);
        }
    
        public static void main (String[] args){
    
            System.out.println(new LogService().makeMst());
        }
    
        private class RandFileLog implements Runnable{
            @Override
            public void run() {
                String msg = makeMst();
                synchronized (RandomAccessFile.class){
                    RandomAccessFile raf = null;
                    try {
                        raf = new RandomAccessFile(path,"rw");
                        raf.seek(raf.length());
                        // windows系统中换行需要
    都用
                      //  raf.writeBytes(msg+"
    "); //linux下只能用于纯英语 
                        raf.write((msg+"
    ").getBytes()); //Linux下可以用中文
                    } catch (Exception e) {
                        e.printStackTrace();
                    }finally {
                        if(null != raf){
                                try {
                                    raf.close();
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                        }
                    }
                }
            }
        }
    
    
        public void log(int count){
            if(count <= 0){
                return;
            }
            for (int i=0;i<count;i++){
                es.submit((Runnable)new RandFileLog());
            }
        }
    
    
    
    
    
    }

  • 相关阅读:
    OpenUrl 的跨平台实现
    通用性站点管理后台(Bee OPOA Platform)
    使用Lucene.net提升网站搜索速度整合记录
    ASP.NET MVC相关
    LeetCode:Copy List with Random Pointer
    ASP.NET交互Rest服务接口(Jquery的Get与Post方式)
    How to Prevent Cross-Site Scripting Attacks
    高性能网站建设指南
    异常
    soket.io.js + angular.js + express.js(node.js)
  • 原文地址:https://www.cnblogs.com/sabertobih/p/13494974.html
Copyright © 2011-2022 走看看