0
点赞
收藏
分享

微信扫一扫

Python模拟日志生成

小黑Neo 2022-01-31 阅读 73



文章目录


  • ​​0x00 文章内容​​
  • ​​0x01 编写Python代码​​
  • ​​1. 完整代码​​
  • ​​0x02 生成日志​​

  • ​​1. Linux定时调度工具的使用​​
  • ​​2. 验证日志是否生成(Linux)​​
  • ​​3. 验证日志是否生成(Windows)​​

  • ​​0xFF 总结​​


0x00 文章内容


  1. 编写Python代码
  2. 生成日志

文章的内容与教程:​​Java模拟定时生成日志到文件​​ 相类似,此文章用Python语言来实现。

0x01 编写Python代码

1. 完整代码

a. 新建一个​​generate_log.py​​文件,添加下面代码:

#coding=UTF-8

import random
import time
url_paths = [
"article/112.html",
"article/113.html",
"article/114.html",
"article/115.html",
"article/116.html",
"article/117.html",
"article/118.html",
"article/119.html",
"video/821",
"tag/list"
]

ip_splices = [102,71,145,33,67,54,164,121]

http_referers = [
"https://www.baidu.com/s?wd={query}",
"https://www.sogou.com/web?query={query}",
"https://cn.bing.com/search?q={query}",
"https://search.yahoo.com/search?p={query}"
]

search_keyword = [
"复制粘贴玩大数据",
"Bootstrap全局css样式的使用",
"Elasticsearch的安装(windows)",
"Kafka的安装及发布订阅消息系统(windows)",
"window7系统上Centos7的安装",
"复制粘贴玩大数据系列教程说明",
"Docker搭建Spark集群(实践篇)"
]

status_codes = ["200","404","500"]

def sample_url():
return random.sample(url_paths,1)[0]

def sample_ip():
splice = random.sample(ip_splices,4)
return ".".join([str(item) for item in splice])

def sample_referer():
if random.uniform(0, 1) > 0.2:
return "-"
refer_str = random.sample(http_referers, 1)
query_str = random.sample(search_keyword, 1)
return refer_str[0].format(query=query_str[0])

def sample_status_code():
return random.sample(status_codes, 1)[0]

def generate_log(count = 10):

time_str = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())

f = open("D:\\python-logs.txt","w+")

while count >= 1:
generate_log = "{ip}\t{localtime}\t \"GET /{url} HTTP/1.1 \" \t{referer}\t{code}".format(
url = sample_url(),
ip = sample_ip(),
referer = sample_referer(),
code = sample_status_code(),
localtime = time_str
)
print generate_log
f.write(generate_log + "\n")
count = count - 1

# URL IP信息 referer 状态码 日志访问时间
if __name__ == '__main__':
generate_log(100)

0x02 生成日志

1. Linux定时调度工具的使用

a. crontab的介绍

用法请参考网站:​​​http://tool.lu/crontab​​​

网站有三种类型的用法: ​​Linux​​ ​​Java(Spring)​​ ​​Java(Quartz)​

此次以Linux为例,如每一分钟执行一次的crontab表达式:

​*/1 * * * *​

CRON表达式:
*/1 * * * *

接下来7次的执行时间:
2019-12-30 00:12:00
2019-12-30 00:13:00
2019-12-30 00:14:00

说明:
Linux
* * * * *
- - - - -
| | | | |
| | | | +----- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- minute (0 - 59)

PS:Linux最快频率只能是分钟级别,如果需要更小,可自己搜索资料解决。

b. Python模拟日志生成使用方法

​vi /home/hadoop-sny/shell/log_generator.sh​

添加内容:

​python /home/hadoop-sny/shell/generate_log.py​

赋予日志生成脚本执行权限

​chmod u+x log_generator.sh​

将​​generate_log.py​​​放于​​/home/hadoop-sny/shell​​文件夹中

c. 定时器的设定

​crontab -e​

然后加入内容:

​*/1 * * * * /home/hadoop-sny/shell/log_generator.sh​

如果需要修改路径,可修改此行代码:

​f = open("D:\\python-logs.txt","w+")​

示例:

​f = open("/home/hadoop-sny/logs/access.log","w+")​

2. 验证日志是否生成(Linux)

此时可以输​​date​​以查看当前系统的时间

观察一分钟后,所设置的文件是否有日志生成:

​tail -200f /home/hadoop-sny/logs/access.log​

3. 验证日志是否生成(Windows)

a. 执行脚本,则可生成100条日志,路径为;​​D:\\python-logs.txt​​:

​python generate_log.py​

Python模拟日志生成_python

生成了一百条日志:

Python模拟日志生成_日志生成_02

0xFF 总结

  1. 通过本教程实现Python模拟日志生成,与Java模拟日志生成做比较,可以理解Java语言与Python语言语法区别。

全栈工程师、市场洞察者、专栏编辑

| ​​公众号​​​ | ​​微信​​​ | ​​微博​​ ​ | ​​简书​​ |

福利:

​​邵奈一的技术博客导航​​

​​邵奈一​​ 原创不易,如转载请标明出处。


举报

相关推荐

0 条评论