Improved logging closes #180
All checks were successful
Build on push / prepare (push) Successful in 9s
Build on push / query (push) Successful in 17s
Build on push / core (push) Successful in 18s
Build on push / mail (push) Successful in 17s
Build on push / translation (push) Successful in 18s

This commit is contained in:
2025-09-15 23:06:38 +02:00
parent d9d7802f33
commit 62b6435470
35 changed files with 533 additions and 467 deletions

View File

@@ -1,5 +1,26 @@
from .email_model import EMail
from .email_client_service import EMailClient
from .abc.email_client_abc import EMailClientABC
from .email_client import EMailClient
from .email_client_settings import EMailClientSettings
from .email_client_settings_name_enum import EMailClientSettingsNameEnum
from .email_client_settings_name_enum import EMailClientSettingsNameEnum
from .email_model import EMail
from .mail_logger import MailLogger
def add_mail(self):
from cpl.core.console import Console
from cpl.core.log import LoggerABC
try:
self.add_singleton(EMailClientABC, EMailClient)
self.add_transient(LoggerABC, MailLogger)
except ImportError as e:
Console.error("cpl-translation is not installed", str(e))
def init():
from cpl.core.dependency_injection import ServiceCollection
ServiceCollection.add_mail = add_mail
init()

View File

@@ -3,11 +3,11 @@ from smtplib import SMTP
from typing import Optional
from cpl.core.environment.application_environment_abc import ApplicationEnvironmentABC
from cpl.core.log.logger_abc import LoggerABC
from cpl.core.utils.credential_manager import CredentialManager
from cpl.mail.abc.email_client_abc import EMailClientABC
from cpl.mail.email_model import EMail
from cpl.mail.email_client_settings import EMailClientSettings
from cpl.mail.email_model import EMail
from cpl.mail.mail_logger import MailLogger
class EMailClient(EMailClientABC):
@@ -22,7 +22,7 @@ class EMailClient(EMailClientABC):
Settings for mailing
"""
def __init__(self, environment: ApplicationEnvironmentABC, logger: LoggerABC, mail_settings: EMailClientSettings):
def __init__(self, environment: ApplicationEnvironmentABC, logger: MailLogger, mail_settings: EMailClientSettings):
EMailClientABC.__init__(self)
self._environment = environment
@@ -35,28 +35,28 @@ class EMailClient(EMailClientABC):
def create(self):
r"""Creates connection"""
self._logger.trace(__name__, f"Started {__name__}.create")
self._logger.trace(f"Started {__name__}.create")
self.connect()
self._logger.trace(__name__, f"Stopped {__name__}.create")
self._logger.trace(f"Stopped {__name__}.create")
def connect(self):
self._logger.trace(__name__, f"Started {__name__}.connect")
self._logger.trace(f"Started {__name__}.connect")
try:
self._logger.debug(__name__, f"Try to connect to {self._mail_settings.host}:{self._mail_settings.port}")
self._logger.debug(f"Try to connect to {self._mail_settings.host}:{self._mail_settings.port}")
self._server = SMTP(self._mail_settings.host, self._mail_settings.port)
self._logger.info(__name__, f"Connected to {self._mail_settings.host}:{self._mail_settings.port}")
self._logger.info(f"Connected to {self._mail_settings.host}:{self._mail_settings.port}")
self._logger.debug(__name__, "Try to start tls")
self._logger.debug("Try to start tls")
self._server.starttls(context=ssl.create_default_context())
self._logger.info(__name__, "Started tls")
self._logger.info("Started tls")
except Exception as e:
self._logger.error(__name__, "Cannot connect to mail server", e)
self._logger.error("Cannot connect to mail server", e)
self._logger.trace(__name__, f"Stopped {__name__}.connect")
self._logger.trace(f"Stopped {__name__}.connect")
def login(self):
r"""Login to server"""
self._logger.trace(__name__, f"Started {__name__}.login")
self._logger.trace(f"Started {__name__}.login")
try:
self._logger.debug(
__name__,
@@ -70,19 +70,19 @@ class EMailClient(EMailClientABC):
f"Logged on as {self._mail_settings.user_name} to {self._mail_settings.host}:{self._mail_settings.port}",
)
except Exception as e:
self._logger.error(__name__, "Cannot login to mail server", e)
self._logger.error("Cannot login to mail server", e)
self._logger.trace(__name__, f"Stopped {__name__}.login")
self._logger.trace(f"Stopped {__name__}.login")
def send_mail(self, email: EMail):
self._logger.trace(__name__, f"Started {__name__}.send_mail")
self._logger.trace(f"Started {__name__}.send_mail")
try:
self.login()
self._logger.debug(__name__, f"Try to send email to {email.receiver_list}")
self._logger.debug(f"Try to send email to {email.receiver_list}")
self._server.sendmail(
self._mail_settings.user_name, email.receiver_list, email.get_content(self._mail_settings.user_name)
)
self._logger.info(__name__, f"Sent email to {email.receiver_list}")
self._logger.info(f"Sent email to {email.receiver_list}")
except Exception as e:
self._logger.error(__name__, f"Cannot send mail to {email.receiver_list}", e)
self._logger.trace(__name__, f"Stopped {__name__}.send_mail")
self._logger.error(f"Cannot send mail to {email.receiver_list}", e)
self._logger.trace(f"Stopped {__name__}.send_mail")

View File

@@ -0,0 +1,8 @@
from cpl.core.log.logger import Logger
from cpl.core.typing import Source
class MailLogger(Logger):
def __init__(self, source: Source):
Logger.__init__(self, source, "mail")