diff --git a/log_generator/generators/__init__.py b/log_generator/generators/__init__.py index 4575cef..e1876ee 100644 --- a/log_generator/generators/__init__.py +++ b/log_generator/generators/__init__.py @@ -6,5 +6,6 @@ from generators.apache import Apache from generators.cloudflare import Cloudflare from generators.cloudfront import Cloudfront +from generators.netaceaV2 import NetaceaV2 -__all__ = [Apache, Cloudfront, Cloudflare] +__all__ = [Apache, Cloudfront, Cloudflare, NetaceaV2] diff --git a/log_generator/generators/netaceaV2.py b/log_generator/generators/netaceaV2.py new file mode 100644 index 0000000..51902c2 --- /dev/null +++ b/log_generator/generators/netaceaV2.py @@ -0,0 +1,31 @@ +from generators.base import LogRender +import json + + +class NetaceaV2(LogRender): + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.timestamp_format = "%FT%T%z" + + def generate(self, d: dict) -> str: + request = f"""{d.method} {d.uri_path}{d.query_params} ${d.http_protocol}""" + time_tuple = d.timestamp.timetuple() + log_line: dict = { + "status": str(d.http_status), + "referrer": d.referer, + "request": request, + "request_time": d.request_time, + "integration_type": "lumbererType", + "integration_version": "lumbererVersion", + "client": d.ip_address, + "user_agent": d.user_agent, + "hour": time_tuple.tm_hour, + "minute": time_tuple.tm_min, + "@timestamp": d.timestamp.strftime(self.timestamp_format), + "path": d.uri_path, + "protocol": d.http_protocol, + "query": d.query_params, + "user_id": d.uuid, + } + # v2 log lines come through as batches + return json.dumps([log_line])