📖
【Python】色々な拡張子のサンプルログを作成するコード
概要
今回は色々な拡張子のサンプルログを作成するコードを紹介
ログを作りたい!でも実際に収集して持ってくるのは大変・・・と言うことがあると思います。
そんな時にこのコードを使えば簡単なサンプルログを作成することができます!!
サンプルコード
import os
import random
import string
from datetime import datetime
def create_log_folder(output_dir):
"""
ログフォルダを作成する。すでに存在している場合は作成しない。
:param output_dir: ログフォルダのパス
"""
if not os.path.exists(output_dir):
os.makedirs(output_dir)
print(f"フォルダ '{output_dir}' を作成しました。")
else:
print(f"フォルダ '{output_dir}' はすでに存在します。")
def generate_random_string(length=10):
"""
任意の文字列を生成する。
:param length: 生成する文字列の長さ
:return: ランダムな文字列
"""
return ''.join(random.choices(string.ascii_letters + string.digits, k=length))
def create_log_files(output_dir, log_list):
"""
指定されたログファイルを作成し、ログを出力する。
:param output_dir: ログフォルダのパス
:param log_list: [ファイル名, 区切り文字, 出力する文字列] のリスト
"""
for file_name, delimiter, log_content in log_list:
file_path = os.path.join(output_dir, file_name)
with open(file_path, 'w') as file:
for _ in range(10): # 10行のログを出力
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
log_level = "INFO"
log_source = f"192.168.{random.randint(0, 255)}.{random.randint(0, 255)}"
random_text = generate_random_string(random.randint(10, 20))
user_id = f"user_{random.randint(1000, 9999)}" # ユーザーIDを追加
# 区切り文字がスペースの場合の特別処理
if delimiter == " ":
log_line = f"{timestamp} {log_level} {log_source} {random_text} {user_id}"
else:
log_line = f"{timestamp}{delimiter}{log_level}{delimiter}{log_source}{delimiter}{random_text}{delimiter}{user_id}"
file.write(log_line + '\n')
print(f"ファイル '{file_name}' を作成しました。")
# 使用例
output_dir = "logs" # ログフォルダのパス
LIST_01 = [
["log1.csv", ",", "サンプルログ1"],
["log2.txt", "|", "サンプルログ2"],
["log3.log", " ", "サンプルログ3"],
["log1.sh", " ", "サンプルログ4"] # スペース区切りのログファイル
]
create_log_folder(output_dir)
create_log_files(output_dir, LIST_01)
実行例
$ python logmaker.py
フォルダ 'logs' を作成しました。
ファイル 'log1.csv' を作成しました。
ファイル 'log2.txt' を作成しました。
ファイル 'log3.log' を作成しました。
ファイル 'log1.sh' を作成しました。
$ ls
logmaker.py logs
$ cat logs/*
2025-06-10 08:30:24,INFO,192.168.8.168,BmF2Z2Oxo42qeW8GJ,user_9291
2025-06-10 08:30:24,INFO,192.168.74.203,2GGQRfyeDR4BNb3,user_3310
2025-06-10 08:30:24,INFO,192.168.72.175,v7vp2rV4vMC2urJSPgB3,user_4916
2025-06-10 08:30:24,INFO,192.168.142.96,1bmScHhevFHrt2rQjnK,user_3529
2025-06-10 08:30:24,INFO,192.168.210.133,NF8a5tmigohQ,user_9284
2025-06-10 08:30:24,INFO,192.168.71.30,Trt676jA12vBbLGuDwR,user_5795
2025-06-10 08:30:24,INFO,192.168.63.44,GvKaAxp8ioZ,user_6259
2025-06-10 08:30:24,INFO,192.168.106.32,4n1eUIhBootdHQNoJHmT,user_6334
2025-06-10 08:30:24,INFO,192.168.253.81,8yyvRucSulp4Vae,user_8289
2025-06-10 08:30:24,INFO,192.168.192.91,alRwGNfDOFHokNpxS0yz,user_2229
2025-06-10 08:30:24 INFO 192.168.143.114 YEb1MEBZUWATeV3EwIfX user_5209
2025-06-10 08:30:24 INFO 192.168.161.38 EXkjc4wpHcewjtoEX3 user_8421
2025-06-10 08:30:24 INFO 192.168.147.146 TPekqfr91PPsutOITm user_5208
2025-06-10 08:30:24 INFO 192.168.132.141 RVAaSjjpkWfCCNYz8T user_9181
2025-06-10 08:30:24 INFO 192.168.113.217 9Ws95G1dKLTMaLyOxZD user_6456
2025-06-10 08:30:24 INFO 192.168.11.68 COhSEmQFeBz6wmzBV user_4095
2025-06-10 08:30:24 INFO 192.168.174.15 MsyFJfB8H56SXTdVYp6 user_2457
2025-06-10 08:30:24 INFO 192.168.140.137 VvANWfdjfZeiciID5K6K user_6538
2025-06-10 08:30:24 INFO 192.168.254.131 mA93gCuHvR7WD user_6292
2025-06-10 08:30:24 INFO 192.168.248.208 NXtqkOBR0DsRm user_3019
2025-06-10 08:30:24|INFO|192.168.223.69|1zzQDq1C5xW8KXYuq9Q7|user_7908
2025-06-10 08:30:24|INFO|192.168.74.19|COuVlhS0eMo|user_8182
2025-06-10 08:30:24|INFO|192.168.192.195|7PF3pEXfxesq7NP|user_4565
2025-06-10 08:30:24|INFO|192.168.157.94|42wBsQDFLATk6|user_2238
2025-06-10 08:30:24|INFO|192.168.119.120|NnqKQa9mH6yn6v|user_6162
2025-06-10 08:30:24|INFO|192.168.246.50|AeDqFju71F3YJK14|user_6656
2025-06-10 08:30:24|INFO|192.168.205.207|F9sPPABh9oBf|user_2237
2025-06-10 08:30:24|INFO|192.168.166.60|5V6zOJ9mgYufF|user_1468
2025-06-10 08:30:24|INFO|192.168.127.202|O8etuCjPZftYsX7CrxA|user_7709
2025-06-10 08:30:24|INFO|192.168.51.119|ITK5nVB9hxcNbgC|user_1550
2025-06-10 08:30:24 INFO 192.168.131.182 RUr3nxhTM9ZehgLAK0Cz user_7635
2025-06-10 08:30:24 INFO 192.168.179.62 Ihb9HGnsf3qQ user_2789
2025-06-10 08:30:24 INFO 192.168.52.201 raJSdonah1v8QvyHf user_9658
2025-06-10 08:30:24 INFO 192.168.107.196 OEa2RUSvrK user_4492
2025-06-10 08:30:24 INFO 192.168.197.57 gdfGWOeGtNL5sYPC user_9713
2025-06-10 08:30:24 INFO 192.168.107.126 QVOS7zPFRShA1oJC user_9593
2025-06-10 08:30:24 INFO 192.168.200.164 KUJR11fZW7 user_5968
2025-06-10 08:30:24 INFO 192.168.48.127 Fb9m6PjlOdlPR8XQ4MfD user_5443
2025-06-10 08:30:24 INFO 192.168.130.174 vOdvkDbzIP7T user_7262
2025-06-10 08:30:24 INFO 192.168.141.230 5UD105ceyFSgTEPRVxQX user_1916
$
大まかな流れ
- プログラム実行
- 指定がなければカレントディレクトリにlogsフォルダを作成する。(lsで確認)
- cat cmdでlogs内に出力されているファイルの中身を確認
利用例
サンプルログの作成
各種動作確認
Discussion