使用python简单模拟日志输出

使用python简单模拟日志输出

使用模块:

  • os–>文件模块,判断文件是否存在;
  • datetime–>日期模块,类似Java里的calendar作用,主要用于日期与字符串之间相互转换;
  • time–>日期和时间戳的相互转换;
  • random–>随机数,math–>四舍五入;
  • json–>把字典转为json格式

生成日志要求为UTF-8文件,和hadoop平台匹配

  • settings–>Editor–>File and Code Templates–>python scripts–>#!/usr/bin/env python # -*- coding:utf-8 -*-

json格式有空格,使用

代码如下:

import datetime
import time
import random
import math
import json
import os

def createLogFileByDate(begin, over, path):
    # 判断文件目录是否存在,如果不存在则创建
    if os.path.exists(path) == False:
        os.mkdir(path,777)
    # 先把输入的字符串转为日期格式,两个日期相减
    addDay = (datetime.datetime.strptime(over, "%Y-%m-%d") - datetime.datetime.strptime(begin, "%Y-%m-%d")).days
    # 把字符串转为日期格式
    t = datetime.datetime.strptime(begin, "%Y-%m-%d")
    # 把日期转为字符串格式
    timestr = t.strftime("%Y-%m-%d")
    for i in range(addDay):
        for j in range(10000):
            # 创建文件,并写入内容 #"D:/LearningNotes/数仓项目/数仓version_03/logmake_py/log"
            with open(path + "/log_" + timestr + ".log", "a") as f:
                f.write(logContentPerDay(timestr,j))
        # 把字符串转为日期格式
        t = datetime.datetime.strptime(timestr, "%Y-%m-%d")
        # 日期增加一天
        delta = datetime.timedelta(days=1)
        t = delta +t
        # 把日期转为字符串格式
        timestr = t.strftime("%Y-%m-%d")


evs = ["CLICK", "MOVE", "CART", "ORDER"]
def logContentPerDay(timestr,j):
    # 随机生成1-100000用户的编号
    userid = str(random.randint(0, 100000))
    # 随机生成4个事件之一
    event = evs[math.floor(random.randint(0, 3))]
    # 按照每8秒产生一条数据 生成1条事件
    timeArray = time.strptime(timestr, "%Y-%m-%d")
    timeStamp = str(int(time.mktime(timeArray)) + j * 8)+"000"
    # 生成商品信息1-5000000商品信息
    no = str(random.randint(0, 5000000) + 1)
    goodinfo = str(json.dumps(dict(No=no, title="商品" + no, price=10000.0, shopid=1, mark="mark"),ensure_ascii=False,separators=(",",":")))
    # 生成移动端信息
    app = json.dumps(dict(appid=123456, appversion="11.1.0"))
    # 生成用户的系统信息
    os = "6.0.0"
    os_version = "android"
    # 生成浏览器信息
    browse = json.dumps(dict(browsetype="chrome", browseversion="82.0"))
    # 判断是APP还是网页版
    divice = str(app if random.randint(0, 1) == 1 else browse)+"\n"
    # 组合起来
    infos = userid + " " + event + " " + timeStamp + " " + goodinfo + " " + os + " " + os_version + " " + divice
    return infos


if __name__ == '__main__':
    createLogFileByDate("2020-7-1","2020-12-31","本地路径\logmake_py")
    # print(logContentPerDay("2020-1-1",2))

猜你喜欢

转载自blog.csdn.net/xiaoxaoyu/article/details/114468221