Python模拟日志生成

简介: Python模拟日志生成

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

网站有三种类型的用法: LinuxJava(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


image.png


生成了一百条日志:

image.png


0xFF 总结


  1. 通过本教程实现Python模拟日志生成,与Java模拟日志生成做比较,可以理解Java语言与Python语言语法区别。
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
764 0
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
394 22
|
API 开发工具 Python
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
Python
python读写操作excel日志
主要是读写操作,创建表格
253 2
|
Python Windows
python知识点100篇系列(24)- 简单强大的日志记录器loguru
【10月更文挑战第11天】Loguru 是一个功能强大的日志记录库,支持日志滚动、压缩、定时删除、高亮和告警等功能。安装简单,使用方便,可通过 `pip install loguru` 快速安装。支持将日志输出到终端或文件,并提供丰富的配置选项,如按时间或大小滚动日志、压缩日志文件等。还支持与邮件通知模块结合,实现邮件告警功能。
549 0
python知识点100篇系列(24)- 简单强大的日志记录器loguru
|
数据采集 机器学习/深度学习 存储
使用 Python 清洗日志数据
使用 Python 清洗日志数据
537 2
|
开发者 Python
基于Python的日志管理与最佳实践
日志是开发和调试过程中的重要工具,然而,如何高效地管理和利用日志常常被忽略。本文通过Python中的logging模块,探讨如何使用日志来进行调试、分析与问题排查,并提出了一些实际应用中的优化建议和最佳实践。
|
消息中间件 Kafka API
python之kafka日志
python之kafka日志
370 3
Python如何将日志输入到文件里
Python如何将日志输入到文件里

热门文章

最新文章

推荐镜像

更多