Skip to content
This repository was archived by the owner on Mar 13, 2020. It is now read-only.

Commit 7ae0619

Browse files
author
dames
committed
Ability to configure log levels from the command line.
1 parent e0175b0 commit 7ae0619

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

relational_data_loader_project/BatchDataLoader.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def import_batch(self, source_engine, target_engine, target_table_configuration,
4343
batch_tracker.extract_completed_successfully(len(data_frame))
4444

4545
if len(data_frame) == 0:
46-
self.logger.info("There are no rows to import, returning False")
46+
self.logger.debug("There are no rows to import, returning -1")
4747
batch_tracker.load_skipped_due_to_zero_rows()
4848
return -1
4949

relational_data_loader_project/__main__.py

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,41 @@
33
from sqlalchemy import create_engine
44
import argparse
55

6+
_LOG_LEVEL_STRINGS = ['CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG']
7+
68

79
def main(args):
8-
configure_logging()
10+
11+
configure_logging(args['log_level'])
912
source_engine = create_engine(args['source-engine'])
1013
destination_engine = create_engine(args['destination-engine'])
1114

1215
data_load_manager = DataLoadManager(args['configuration-folder'])
1316
data_load_manager.start_import(source_engine, destination_engine, True)
1417

1518

16-
def configure_logging():
19+
def configure_logging(log_level):
1720
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
1821
log = logging.getLogger()
1922
console_stream_handler = logging.StreamHandler()
2023
console_stream_handler.setFormatter(formatter)
2124
log.addHandler(console_stream_handler)
22-
log.setLevel(logging.INFO)
25+
log.setLevel(log_level)
2326
return
2427

28+
29+
def _log_level_string_to_int(log_level_string):
30+
if not log_level_string in _LOG_LEVEL_STRINGS:
31+
message = 'invalid choice: {0} (choose from {1})'.format(log_level_string, _LOG_LEVEL_STRINGS)
32+
raise argparse.ArgumentTypeError(message)
33+
34+
log_level_int = getattr(logging, log_level_string, logging.INFO)
35+
# check the logging log_level_choices have not changed from our expected values
36+
assert isinstance(log_level_int, int)
37+
38+
return log_level_int
39+
40+
2541
def get_arguments():
2642
parser = argparse.ArgumentParser(description='Relational Data Loader')
2743

@@ -32,14 +48,17 @@ def get_arguments():
3248
help='The destination engine. Eg: postgresql+psycopg2://postgres:xxxx@localhost/dest_dw')
3349

3450
parser.add_argument('configuration-folder', metavar='configuration-folder',
35-
help='The configration folder. Eg C:\\_dev\\oscars-misc\\el-pipeline-spike\\configuraton\\')
51+
help='The configuration folder. Eg C:\\_dev\\oscars-misc\\el-pipeline-spike\\configuraton\\')
52+
53+
parser.add_argument('--log-level',
54+
default='INFO',
55+
type=_log_level_string_to_int,
56+
nargs='?',
57+
help='Set the logging output level. {0}'.format(_LOG_LEVEL_STRINGS))
3658

3759
return vars(parser.parse_args())
3860

3961

4062
if __name__ == "__main__":
4163
args = get_arguments()
4264
main(args)
43-
44-
45-

0 commit comments

Comments
 (0)