mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-29 13:32:08 +00:00
Logging login (#4046)
* basic logging for the login * removing unused import * hacking the logs custom filter to not filter the email * black * cooping with the new changes * removing redundant method
This commit is contained in:
18
openbb_terminal/core/log/generation/common.py
Normal file
18
openbb_terminal/core/log/generation/common.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# IMPORTATION STANDARD
|
||||
import logging
|
||||
|
||||
# IMPORTATION THIRDPARTY
|
||||
|
||||
|
||||
# IMPORTATION INTERNAL
|
||||
from openbb_terminal.core.log.generation.path_tracking_file_handler import (
|
||||
PathTrackingFileHandler,
|
||||
)
|
||||
|
||||
|
||||
def do_rollover():
|
||||
"""RollOver the log file."""
|
||||
|
||||
for handler in logging.getLogger().handlers:
|
||||
if isinstance(handler, PathTrackingFileHandler):
|
||||
handler.doRollover()
|
||||
25
openbb_terminal/core/log/generation/custom_logger.py
Normal file
25
openbb_terminal/core/log/generation/custom_logger.py
Normal file
@@ -0,0 +1,25 @@
|
||||
# IMPORTATION STANDARD
|
||||
import logging
|
||||
|
||||
# IMPORTATION THIRDPARTY
|
||||
|
||||
|
||||
# IMPORTATION INTERNAL
|
||||
from openbb_terminal.loggers import setup_logging
|
||||
from openbb_terminal.core.log.generation import settings_logger
|
||||
from openbb_terminal.core.log.generation import user_logger
|
||||
from openbb_terminal.core.log.generation.common import do_rollover
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def log_terminal(test_mode: bool):
|
||||
"""Logs for the terminal"""
|
||||
|
||||
if not test_mode:
|
||||
setup_logging()
|
||||
|
||||
logger.info("START")
|
||||
settings_logger.log_all_settings(with_rollover=False)
|
||||
user_logger.log_user(with_rollover=False)
|
||||
do_rollover()
|
||||
@@ -5,9 +5,13 @@ import re
|
||||
# IMPORTATION THIRDPARTY
|
||||
|
||||
# IMPORTATION INTERNAL
|
||||
from openbb_terminal.core.log.generation.user_logger import __name__ as user_logger_name
|
||||
from openbb_terminal.core.config.paths import HOME_DIRECTORY
|
||||
from openbb_terminal.core.log.generation.settings import AppSettings
|
||||
|
||||
# considering starting at 0 and after the logging prefix i.e., just the text to be filtered
|
||||
MODULE_POSITION = 1
|
||||
|
||||
|
||||
class FormatterWithExceptions(logging.Formatter):
|
||||
"""Logging Formatter that includes formatting of Exceptions"""
|
||||
@@ -54,6 +58,9 @@ class FormatterWithExceptions(logging.Formatter):
|
||||
|
||||
@staticmethod
|
||||
def mock_email(text: str) -> str:
|
||||
if text.split("|")[MODULE_POSITION] == user_logger_name:
|
||||
return text
|
||||
|
||||
pattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"
|
||||
replacement = " FILTERED_EMAIL "
|
||||
text_mocked = re.sub(pattern, replacement, text)
|
||||
|
||||
@@ -11,9 +11,7 @@ from types import FunctionType, ModuleType
|
||||
import openbb_terminal.feature_flags as obbff
|
||||
from openbb_terminal import config_terminal as cfg
|
||||
from openbb_terminal.terminal_helper import is_packaged_application
|
||||
from openbb_terminal.core.log.generation.path_tracking_file_handler import (
|
||||
PathTrackingFileHandler,
|
||||
)
|
||||
from openbb_terminal.core.log.generation.common import do_rollover
|
||||
|
||||
|
||||
SENSITIVE_WORDS = [
|
||||
@@ -31,14 +29,15 @@ SENSITIVE_WORDS = [
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def log_all_settings() -> None:
|
||||
def log_all_settings(with_rollover: bool = True) -> None:
|
||||
"""Log all settings"""
|
||||
log_settings()
|
||||
log_config_terminal()
|
||||
log_feature_flags()
|
||||
log_keys()
|
||||
|
||||
do_rollover()
|
||||
if with_rollover:
|
||||
do_rollover()
|
||||
|
||||
|
||||
def log_settings() -> None:
|
||||
@@ -117,11 +116,3 @@ def log_keys() -> None:
|
||||
current_keys[cfg_var_name] = "not_defined"
|
||||
|
||||
logger.info("KEYS: %s ", json.dumps(current_keys))
|
||||
|
||||
|
||||
def do_rollover():
|
||||
"""RollOver the log file."""
|
||||
|
||||
for handler in logging.getLogger().handlers:
|
||||
if isinstance(handler, PathTrackingFileHandler):
|
||||
handler.doRollover()
|
||||
|
||||
27
openbb_terminal/core/log/generation/user_logger.py
Normal file
27
openbb_terminal/core/log/generation/user_logger.py
Normal file
@@ -0,0 +1,27 @@
|
||||
# IMPORTATION STANDARD
|
||||
import json
|
||||
import logging
|
||||
|
||||
# IMPORTATION THIRDPARTY
|
||||
|
||||
|
||||
# IMPORTATION INTERNAL
|
||||
from openbb_terminal.session.user import User
|
||||
from openbb_terminal.core.log.generation.common import do_rollover
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def log_user(with_rollover: bool = True):
|
||||
"""Log user"""
|
||||
if not User.is_guest():
|
||||
log_user_info()
|
||||
|
||||
if with_rollover:
|
||||
do_rollover()
|
||||
|
||||
|
||||
def log_user_info():
|
||||
"""Log user info"""
|
||||
user_info = {"user_uuid": User.get_uuid(), "user_email": User.get_email()}
|
||||
logger.info("USER: %s ", json.dumps(user_info))
|
||||
@@ -39,6 +39,16 @@ class User:
|
||||
if obbff.USE_FLAIR == ":openbb" or username in obbff.USE_FLAIR:
|
||||
setattr(obbff, "USE_FLAIR", username + " 🦋")
|
||||
|
||||
@classmethod
|
||||
def get_uuid(cls):
|
||||
"""Get uuid."""
|
||||
return User._UUID
|
||||
|
||||
@classmethod
|
||||
def get_email(cls):
|
||||
"""Get email."""
|
||||
return User._EMAIL
|
||||
|
||||
@classmethod
|
||||
def whoami(cls):
|
||||
"""Display user info."""
|
||||
|
||||
@@ -43,8 +43,6 @@ from openbb_terminal.helper_funcs import (
|
||||
get_flair,
|
||||
EXPORT_ONLY_RAW_DATA_ALLOWED,
|
||||
)
|
||||
from openbb_terminal.loggers import setup_logging
|
||||
from openbb_terminal.core.log.generation.settings_logger import log_all_settings
|
||||
from openbb_terminal.menu import session, is_papermill
|
||||
from openbb_terminal.parent_classes import BaseController
|
||||
from openbb_terminal.rich_config import console, MenuText
|
||||
@@ -62,6 +60,7 @@ from openbb_terminal.helper_funcs import parse_and_split_input
|
||||
from openbb_terminal.keys_model import first_time_user
|
||||
from openbb_terminal.common import feedparser_view
|
||||
from openbb_terminal.reports.reports_model import ipykernel_launcher
|
||||
from openbb_terminal.core.log.generation.custom_logger import log_terminal
|
||||
|
||||
# pylint: disable=too-many-public-methods,import-outside-toplevel, too-many-function-args
|
||||
# pylint: disable=too-many-branches,no-member,C0302,too-many-return-statements
|
||||
@@ -807,10 +806,7 @@ def terminal(jobs_cmds: List[str] = None, test_mode=False):
|
||||
if module.startswith("openbb"):
|
||||
importlib.reload(sys.modules[module])
|
||||
|
||||
if not test_mode:
|
||||
setup_logging()
|
||||
logger.info("START")
|
||||
log_all_settings()
|
||||
log_terminal(test_mode=test_mode)
|
||||
|
||||
if jobs_cmds is not None and jobs_cmds:
|
||||
logger.info("INPUT: %s", "/".join(jobs_cmds))
|
||||
|
||||
Reference in New Issue
Block a user