Skip to content

Commit aea0dfe

Browse files
author
Kareem Zidane
committedNov 25, 2020
move logger to module level
1 parent db0d14a commit aea0dfe

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed
 

‎src/cs50/sql.py

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

@@ -12,14 +33,11 @@ def __init__(self, url, **kwargs):
1233
"""
1334

1435
# Lazily import
15-
import logging
1636
import os
1737
import re
1838
import sqlalchemy
1939
import sqlite3
2040

21-
from .cs50 import _formatException
22-
2341
# Require that file already exist for SQLite
2442
matches = re.search(r"^sqlite:///(.+)$", url)
2543
if matches:
@@ -50,32 +68,18 @@ def connect(dbapi_connection, connection_record):
5068
# Register listener
5169
sqlalchemy.event.listen(self._engine, "connect", connect)
5270

53-
# Configure logger
54-
self._logger = logging.getLogger(__name__)
55-
self._logger.setLevel(logging.DEBUG)
56-
57-
# Log messages once
58-
self._logger.propagate = False
59-
60-
ch = logging.StreamHandler()
61-
ch.setLevel(logging.DEBUG)
62-
63-
formatter = logging.Formatter("%(levelname)s: %(message)s")
64-
formatter.formatException = lambda exc_info: _formatException(*exc_info)
65-
ch.setFormatter(formatter)
66-
self._logger.addHandler(ch)
6771

6872
# Test database
69-
disabled = self._logger.disabled
70-
self._logger.disabled = True
73+
disabled = _logger.disabled
74+
_logger.disabled = True
7175
try:
7276
self.execute("SELECT 1")
7377
except sqlalchemy.exc.OperationalError as e:
7478
e = RuntimeError(_parse_exception(e))
7579
e.__cause__ = None
7680
raise e
7781
finally:
78-
self._logger.disabled = disabled
82+
_logger.disabled = disabled
7983

8084
def __del__(self):
8185
"""Disconnect from database."""
@@ -356,22 +360,22 @@ def shutdown_session(exception=None):
356360

357361
# If constraint violated, return None
358362
except sqlalchemy.exc.IntegrityError as e:
359-
self._logger.debug(termcolor.colored(statement, "yellow"))
363+
_logger.debug(termcolor.colored(statement, "yellow"))
360364
e = ValueError(e.orig)
361365
e.__cause__ = None
362366
raise e
363367

364368
# If user error
365369
except (sqlalchemy.exc.OperationalError, sqlalchemy.exc.ProgrammingError) as e:
366370
self._disconnect()
367-
self._logger.debug(termcolor.colored(statement, "red"))
371+
_logger.debug(termcolor.colored(statement, "red"))
368372
e = RuntimeError(e.orig)
369373
e.__cause__ = None
370374
raise e
371375

372376
# Return value
373377
else:
374-
self._logger.debug(termcolor.colored(_statement, "green"))
378+
_logger.debug(termcolor.colored(_statement, "green"))
375379
return ret
376380

377381
def _escape(self, value):

0 commit comments

Comments
 (0)
Please sign in to comment.