Skip to content

Instantly share code, notes, and snippets.

@jcroot
Created May 23, 2022 21:34
Show Gist options
  • Save jcroot/c5e44be6dd476d525396691e27ff9ac0 to your computer and use it in GitHub Desktop.
Save jcroot/c5e44be6dd476d525396691e27ff9ac0 to your computer and use it in GitHub Desktop.
Improve my code
import json
import time
from datetime import datetime, timezone
# For the raw events given (a List of Dictionaries) returns normalized log events as a List of
# Dictionaries having the following keys: 'server', 'date', 'severity', 'process', 'message'.
def transmogrify(raw_events: [dict]) -> [dict]:
# Write your solution here and in any helper functions you wish to create.
# Do not change this function signature or this could break tests.
HUNDRED_YEARS = 100 * 365 * 24 * 3600
json_data_list = []
for n in raw_events:
try:
if n['date'] > time.time() + HUNDRED_YEARS:
mtime = datetime.utcfromtimestamp(n['date'] / 1000)
else:
mtime = datetime.utcfromtimestamp(n['date'])
current_date = mtime.isoformat() + '.000000'
except TypeError as err:
current_date = n['date']
process_value = n['source'] if "source" in n else n['process']
if "events" in n:
for evt in n['events']:
error_level = return_error_level(evt['indicator-level'])
if evt['indicator-type'] != "message":
message = evt['indicator-type'] + " " + evt['indicator-value']
else:
message = evt['indicator-value']
json_data_list.append(parse_json(n['server'], current_date, error_level, process_value, message))
else:
json_data_list.append(parse_json(n['server'], current_date, n['severity'], process_value, n['message']))
return json_data_list
def return_error_level(indicator):
if indicator == 7:
error_level = "WARN"
elif indicator == 3:
error_level = "INFO"
else:
error_level = "TRACE"
return error_level
def parse_json(server, current_date, error_level, process_value, message):
json_parser_value = {
"server": server,
"date": current_date,
"severity": error_level,
"process": process_value,
"message": message
}
return json_parser_value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment