""" AUTHOR: Khushal P Soonderji DATE: Friday, 11th Oct., 2024 OBJECTIVE: To have a structure for the logs maintained for regular function calls. This is different from the logs maintained for API calls. REFERENCES: 01. https://chatgpt.com/share/6708b6c9-6ba4-800f-9ea9-00ec35067512 DOWNLOADS: N/A """ # ***************************************************************************************************************** # ***** **** # *** IMPORT *** # ***** **** # ***************************************************************************************************************** # System-level activities: import os import distro import socket import platform # For data-modelling: from pydantic import BaseModel, Field from typing import Any, Optional, List, Literal # To work with date and time: import datetime # ***************************************************************************************************************** # ***** **** # *** MACROS / ONE-TIME INIT *** # ***** **** # ***************************************************************************************************************** # Info for logging that will stay constant during runtime: SERVER_HOSTNAME = str(socket.gethostname()) # ... Gives the machine's name. SERVER_LOGIN = str(os.getlogin()) # ............. Gives the user that is logged in. PLATFORM_INFO = platform.uname() HOST_OS = f"{platform.system() or 'N/A'} ({distro.name(True) or 'N/A'})" HOST_CPU = f"{PLATFORM_INFO.processor} ({PLATFORM_INFO.machine})" # ***************************************************************************************************************** # ***** **** # *** VARIABLES *** # ***** **** # ***************************************************************************************************************** # --- Nothing Yet # ***************************************************************************************************************** # ***** **** # *** CLASSES *** # ***** **** # ***************************************************************************************************************** class GeneralLogModel(BaseModel): # To identify the machine the code is running on. # DO NOT MODIFY THESE: hostname: str = SERVER_HOSTNAME login: str = SERVER_LOGIN platform: str = f"{PLATFORM_INFO.system} (v{PLATFORM_INFO.version}, release {PLATFORM_INFO.release}) on {PLATFORM_INFO.machine}" os: str = HOST_OS cpu: str = HOST_CPU # Can modify these: pid: Optional[Any] = None ppid: Optional[Any] = None # To identify the project and actions: project: Optional[str] = None log: str operation: Optional[str] = None apiVer: Optional[str] = None logId: Optional[str] = None logChain: Optional[str] = None # Timing metrics: ts: datetime.datetime tat: float cpuTime: float # To understand the inputs: func: str args: Optional[Any] = None kwargs: Optional[Any] = None # To understand the outputs: exception: Optional[Any] = None response: Optional[Any] = None # ***************************************************************************************************************** # ***** **** # *** FUNCTIONS *** # ***** **** # ***************************************************************************************************************** # --- Nothing Yet # ***************************************************************************************************************** # ***** **** # *** MAIN PROGRAM *** # ***** **** # ***************************************************************************************************************** if __name__ == "__main__": pass