about summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-10-24 15:54:24 -0500
committerFrederick Muriuki Muriithi2024-10-24 15:56:41 -0500
commita52401e7191850c4a6542da1af5f2b2769312871 (patch)
tree52a9622b2f8461ef4074bd775460b22963ae10a5 /scripts
parent80ae9ca56a34ae11c840bd6a7d24fbd9771c0c3e (diff)
downloadgn-uploader-a52401e7191850c4a6542da1af5f2b2769312871.tar.gz
Move logger creation to `build_main` function
Since the module-level loggers are built mostly the same, move the
creation of the logger to the more general function to reduce
repetition.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/rqtl2/entry.py20
-rw-r--r--scripts/rqtl2/install_genotypes.py16
-rw-r--r--scripts/rqtl2/install_phenos.py17
-rw-r--r--scripts/rqtl2/phenotypes_qc.py14
4 files changed, 22 insertions, 45 deletions
diff --git a/scripts/rqtl2/entry.py b/scripts/rqtl2/entry.py
index 5c7e7e4..bc4cd9f 100644
--- a/scripts/rqtl2/entry.py
+++ b/scripts/rqtl2/entry.py
@@ -1,5 +1,5 @@
 """Build common script-entry structure."""
-from logging import Logger
+import logging
 from typing import Callable
 from argparse import Namespace
 
@@ -12,12 +12,19 @@ from uploader.check_connections import check_db, check_redis
 
 from scripts.redis_logger import setup_redis_logger
 
-def build_main(args: Namespace,
-               run_fn: Callable[[Connection, Namespace], int],
-               logger: Logger,
-               loglevel: str = "INFO") -> Callable[[],int]:
+def build_main(
+        args: Namespace,
+        run_fn: Callable[[Connection, Namespace, logging.Logger], int],
+        loggername: str
+) -> Callable[[],int]:
     """Build a function to be used as an entry-point for scripts."""
     def main():
+        logging.basicConfig(
+            format=(
+                "%(asctime)s - %(levelname)s %(name)s: "
+                "(%(pathname)s: %(lineno)d) %(message)s"),
+            level=args.loglevel)
+        logger = logging.getLogger(loggername)
         check_db(args.databaseuri)
         check_redis(args.redisuri)
         if not args.rqtl2bundle.exists():
@@ -32,7 +39,6 @@ def build_main(args: Namespace,
                 fqjobid,
                 f"{fqjobid}:log-messages",
                 args.redisexpiry))
-            logger.setLevel(loglevel)
-            return run_fn(dbconn, args)
+            return run_fn(dbconn, args, logger)
 
     return main
diff --git a/scripts/rqtl2/install_genotypes.py b/scripts/rqtl2/install_genotypes.py
index 6b89142..abc3f07 100644
--- a/scripts/rqtl2/install_genotypes.py
+++ b/scripts/rqtl2/install_genotypes.py
@@ -5,7 +5,7 @@ from pathlib import Path
 from zipfile import ZipFile
 from functools import reduce
 from typing import Iterator, Optional
-from logging import Logger, getLogger, StreamHandler
+from logging import Logger, getLogger
 
 import MySQLdb as mdb
 from MySQLdb.cursors import DictCursor
@@ -19,6 +19,8 @@ from scripts.rqtl2.entry import build_main
 from scripts.rqtl2.cli_parser import add_common_arguments
 from scripts.cli_parser import init_cli_parser, add_global_data_arguments
 
+__MODULE__ = "scripts.rqtl2.install_genotypes"
+
 def insert_markers(
         dbconn: mdb.Connection,
         speciesid: int,
@@ -253,15 +255,5 @@ if __name__ == "__main__":
 
         return parser.parse_args()
 
-    thelogger = getLogger("install_genotypes")
-    thelogger.addHandler(StreamHandler(stream=sys.stderr))
-    main = build_main(
-        cli_args(),
-        lambda dbconn, args: install_genotypes(dbconn,
-                                               args.speciesid,
-                                               args.populationid,
-                                               args.datasetid,
-                                               args.rqtl2bundle),
-        thelogger,
-        "INFO")
+    main = build_main(cli_args(), install_genotypes, __MODULE__)
     sys.exit(main())
diff --git a/scripts/rqtl2/install_phenos.py b/scripts/rqtl2/install_phenos.py
index b5cab8e..e96742f 100644
--- a/scripts/rqtl2/install_phenos.py
+++ b/scripts/rqtl2/install_phenos.py
@@ -4,7 +4,7 @@ import traceback
 from pathlib import Path
 from zipfile import ZipFile
 from functools import reduce
-from logging import Logger, getLogger, StreamHandler
+from logging import Logger, getLogger
 
 import MySQLdb as mdb
 from MySQLdb.cursors import DictCursor
@@ -18,6 +18,8 @@ from r_qtl import r_qtl2_qc as rqc
 
 from functional_tools import take
 
+__MODULE__ = "scripts.rqtl2.install_phenos"
+
 def insert_probesets(dbconn: mdb.Connection,
                      platformid: int,
                      phenos: tuple[str, ...]) -> int:
@@ -155,16 +157,5 @@ if __name__ == "__main__":
 
         return parser.parse_args()
 
-    thelogger = getLogger("install_phenos")
-    thelogger.addHandler(StreamHandler(stream=sys.stderr))
-    main = build_main(
-        cli_args(),
-        lambda dbconn, args: install_pheno_files(dbconn,
-                                                 args.speciesid,
-                                                 args.platformid,
-                                                 args.datasetid,
-                                                 args.rqtl2bundle,
-                                                 thelogger),
-        thelogger,
-        "DEBUG")
+    main = build_main(cli_args(), install_pheno_files, __MODULE__)
     sys.exit(main())
diff --git a/scripts/rqtl2/phenotypes_qc.py b/scripts/rqtl2/phenotypes_qc.py
index ccd2110..4191df9 100644
--- a/scripts/rqtl2/phenotypes_qc.py
+++ b/scripts/rqtl2/phenotypes_qc.py
@@ -378,17 +378,5 @@ if __name__ == "__main__":
             type=Path)
         return parser.parse_args()
 
-    _logger = getLogger("phenotypes_qc")
-    _logger.addHandler(StreamHandler(stream=sys.stderr))
-
-    main = build_main(
-        cli_args(),
-        lambda dbconn, args: run_qc(dbconn,
-                                    args.rqtl2bundle,
-                                    args.working_dir,
-                                    args.speciesid,
-                                    args.populationid,
-                                    _logger),
-        _logger,
-        "DEBUG")
+    main = build_main(cli_args(), run_qc, __MODULE__)
     sys.exit(main())