Skip to content

Commit a80dfeb

Browse files
author
Kareem Zidane
committedNov 25, 2020
configure root logger
1 parent 87394fd commit a80dfeb

File tree

3 files changed

+15
-40
lines changed

3 files changed

+15
-40
lines changed
 

Diff for: ‎src/cs50/cs50.py

+8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import print_function
22

33
import inspect
4+
import logging
45
import os
56
import re
67
import sys
@@ -11,6 +12,13 @@
1112
from traceback import format_exception
1213

1314

15+
# Configure default logging handler and formatter
16+
logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.DEBUG)
17+
18+
# Patch formatException
19+
logging.root.handlers[0].formatter.formatException = lambda exc_info: _formatException(*exc_info)
20+
21+
1422
class _flushfile():
1523
"""
1624
Disable buffering for standard output and standard error.

Diff for: ‎src/cs50/flask.py

-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ def _wrap_flask(f):
1212
if f.__version__ < StrictVersion("1.0"):
1313
return
1414

15-
f.logging.default_handler.formatter.formatException = lambda exc_info: _formatException(*exc_info)
16-
1715
if os.getenv("CS50_IDE_TYPE") == "online":
1816
from werkzeug.middleware.proxy_fix import ProxyFix
1917
_flask_init_before = f.Flask.__init__

Diff for: ‎src/cs50/sql.py

+7-38
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,4 @@
1-
def _enable_logging(f):
2-
"""Enable logging of SQL statements when Flask is in use."""
3-
4-
import logging
5-
import functools
6-
7-
@functools.wraps(f)
8-
def decorator(*args, **kwargs):
9-
10-
# Infer whether Flask is installed
11-
try:
12-
import flask
13-
except ModuleNotFoundError:
14-
return f(*args, **kwargs)
15-
16-
# Enable logging
17-
disabled = logging.getLogger("cs50").disabled
18-
if flask.current_app:
19-
logging.getLogger("cs50").disabled = False
20-
try:
21-
return f(*args, **kwargs)
22-
finally:
23-
logging.getLogger("cs50").disabled = disabled
24-
25-
return decorator
1+
import logging
262

273

284
class SQL(object):
@@ -45,9 +21,6 @@ def __init__(self, url, **kwargs):
4521
import sqlalchemy
4622
import sqlite3
4723

48-
# Get logger
49-
self._logger = logging.getLogger("cs50")
50-
5124
# Require that file already exist for SQLite
5225
matches = re.search(r"^sqlite:///(.+)$", url)
5326
if matches:
@@ -78,20 +51,17 @@ def connect(dbapi_connection, connection_record):
7851
# Register listener
7952
sqlalchemy.event.listen(self._engine, "connect", connect)
8053

81-
# Log statements to standard error
82-
logging.basicConfig(level=logging.DEBUG)
83-
8454
# Test database
55+
disabled = logging.root.disabled
56+
logging.root.disabled = True
8557
try:
86-
disabled = self._logger.disabled
87-
self._logger.disabled = True
8858
self.execute("SELECT 1")
8959
except sqlalchemy.exc.OperationalError as e:
9060
e = RuntimeError(_parse_exception(e))
9161
e.__cause__ = None
9262
raise e
9363
finally:
94-
self._logger.disabled = disabled
64+
logging.root.disabled = disabled
9565

9666
def __del__(self):
9767
"""Disconnect from database."""
@@ -103,7 +73,6 @@ def _disconnect(self):
10373
self._connection.close()
10474
delattr(self, "_connection")
10575

106-
@_enable_logging
10776
def execute(self, sql, *args, **kwargs):
10877
"""Execute a SQL statement."""
10978

@@ -373,22 +342,22 @@ def shutdown_session(exception=None):
373342

374343
# If constraint violated, return None
375344
except sqlalchemy.exc.IntegrityError as e:
376-
self._logger.debug(termcolor.colored(statement, "yellow"))
345+
logging.debug(termcolor.colored(statement, "yellow"))
377346
e = ValueError(e.orig)
378347
e.__cause__ = None
379348
raise e
380349

381350
# If user error
382351
except (sqlalchemy.exc.OperationalError, sqlalchemy.exc.ProgrammingError) as e:
383352
self._disconnect()
384-
self._logger.debug(termcolor.colored(statement, "red"))
353+
logging.debug(termcolor.colored(statement, "red"))
385354
e = RuntimeError(e.orig)
386355
e.__cause__ = None
387356
raise e
388357

389358
# Return value
390359
else:
391-
self._logger.debug(termcolor.colored(_statement, "green"))
360+
logging.debug(termcolor.colored(_statement, "green"))
392361
return ret
393362

394363
def _escape(self, value):

0 commit comments

Comments
 (0)
Please sign in to comment.