Skip to content

Commit f2ba330

Browse files
author
Kareem Zidane
committed
configure cs50 logger in cs50 module
1 parent 9cd038c commit f2ba330

File tree

2 files changed

+24
-27
lines changed

2 files changed

+24
-27
lines changed

src/cs50/cs50.py

+15
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,21 @@
2222
except IndexError:
2323
pass
2424

25+
# Configure cs50 logger
26+
_logger = logging.getLogger("cs50")
27+
_logger.setLevel(logging.DEBUG)
28+
29+
# Log messages once
30+
_logger.propagate = False
31+
32+
handler = logging.StreamHandler()
33+
handler.setLevel(logging.DEBUG)
34+
35+
formatter = logging.Formatter("%(levelname)s: %(message)s")
36+
formatter.formatException = lambda exc_info: _formatException(*exc_info)
37+
handler.setFormatter(formatter)
38+
_logger.addHandler(handler)
39+
2540

2641
class _flushfile():
2742
"""

src/cs50/sql.py

+9-27
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,3 @@
1-
import logging
2-
3-
from .cs50 import _formatException
4-
5-
6-
# Configure logger
7-
_logger = logging.getLogger("cs50")
8-
_logger.setLevel(logging.DEBUG)
9-
10-
# Log messages once
11-
_logger.propagate = False
12-
13-
handler = logging.StreamHandler()
14-
handler.setLevel(logging.DEBUG)
15-
16-
formatter = logging.Formatter("%(levelname)s: %(message)s")
17-
formatter.formatException = lambda exc_info: _formatException(*exc_info)
18-
handler.setFormatter(formatter)
19-
_logger.addHandler(handler)
20-
21-
221
class SQL(object):
232
"""Wrap SQLAlchemy to provide a simple SQL API."""
243

@@ -33,6 +12,7 @@ def __init__(self, url, **kwargs):
3312
"""
3413

3514
# Lazily import
15+
import logging
3616
import os
3717
import re
3818
import sqlalchemy
@@ -49,6 +29,8 @@ def __init__(self, url, **kwargs):
4929
# Create engine, disabling SQLAlchemy's own autocommit mode, raising exception if back end's module not installed
5030
self._engine = sqlalchemy.create_engine(url, **kwargs).execution_options(autocommit=False)
5131

32+
self._logger = logging.getLogger("cs50")
33+
5234
# Listener for connections
5335
def connect(dbapi_connection, connection_record):
5436

@@ -70,16 +52,16 @@ def connect(dbapi_connection, connection_record):
7052

7153

7254
# Test database
73-
disabled = _logger.disabled
74-
_logger.disabled = True
55+
disabled = self._logger.disabled
56+
self._logger.disabled = True
7557
try:
7658
self.execute("SELECT 1")
7759
except sqlalchemy.exc.OperationalError as e:
7860
e = RuntimeError(_parse_exception(e))
7961
e.__cause__ = None
8062
raise e
8163
finally:
82-
_logger.disabled = disabled
64+
self._logger.disabled = disabled
8365

8466
def __del__(self):
8567
"""Disconnect from database."""
@@ -360,22 +342,22 @@ def shutdown_session(exception=None):
360342

361343
# If constraint violated, return None
362344
except sqlalchemy.exc.IntegrityError as e:
363-
_logger.debug(termcolor.colored(statement, "yellow"))
345+
self._logger.debug(termcolor.colored(statement, "yellow"))
364346
e = ValueError(e.orig)
365347
e.__cause__ = None
366348
raise e
367349

368350
# If user error
369351
except (sqlalchemy.exc.OperationalError, sqlalchemy.exc.ProgrammingError) as e:
370352
self._disconnect()
371-
_logger.debug(termcolor.colored(statement, "red"))
353+
self._logger.debug(termcolor.colored(statement, "red"))
372354
e = RuntimeError(e.orig)
373355
e.__cause__ = None
374356
raise e
375357

376358
# Return value
377359
else:
378-
_logger.debug(termcolor.colored(_statement, "green"))
360+
self._logger.debug(termcolor.colored(_statement, "green"))
379361
return ret
380362

381363
def _escape(self, value):

0 commit comments

Comments
 (0)