From 4410503349910c3f5d932d7d7877a0d26f74d6c9 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Wed, 15 May 2019 03:08:09 -0700 Subject: [PATCH] More fixes to logging and disabled tests --- src/ocrmypdf/__main__.py | 13 +++++++++---- src/ocrmypdf/_jobcontext.py | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/ocrmypdf/__main__.py b/src/ocrmypdf/__main__.py index 624f69dd..544eb1f6 100755 --- a/src/ocrmypdf/__main__.py +++ b/src/ocrmypdf/__main__.py @@ -17,6 +17,7 @@ # along with OCRmyPDF. If not, see . import argparse +import logging import os import sys @@ -459,14 +460,18 @@ debugging.add_argument( action='store_true', help="Keep temporary files (helpful for debugging)", ) -# debugging.add_argument( -# '--flowchart', type=str, help="Generate the pipeline execution flowchart" -# ) def run(args=None): options = parser.parse_args(args=args) - return run_pipeline(options) + + log = logging.getLogger() + console = logging.StreamHandler(stream=sys.stderr) + console.setLevel(logging.DEBUG) + log.addHandler(console) + + result = run_pipeline(options) + return result if __name__ == '__main__': diff --git a/src/ocrmypdf/_jobcontext.py b/src/ocrmypdf/_jobcontext.py index f5ac6978..78465bb2 100644 --- a/src/ocrmypdf/_jobcontext.py +++ b/src/ocrmypdf/_jobcontext.py @@ -36,7 +36,7 @@ class PDFContext: self.name = 'origin.pdf' if self.name == '-': self.name = 'stdin' - self.log = get_logger(options, '%s: ' % self.name) + self.log = get_logger(options, filename=self.name) def get_path(self, name): return os.path.join(self.work_folder, name) @@ -56,7 +56,7 @@ class PageContext: self.pageno = pageno self.pageinfo = pdf_context.pdfinfo[pageno] self.log = get_logger( - pdf_context.options, '%s Page %d: ' % (pdf_context.name, pageno + 1) + pdf_context.options, filename=self.pdf_context.name, page=(self.pageno + 1) ) def get_path(self, name): @@ -73,5 +73,31 @@ def cleanup_working_files(work_folder, options): shutil.rmtree(work_folder) -def get_logger(options=None, prefix=''): - return logging.getLogger(prefix) +class LogNameAdapter(logging.LoggerAdapter): + def process(self, msg, kwargs): + return '[%s] %s' % (self.extra['filename'], msg), kwargs + + +class LogNamePageAdapter(logging.LoggerAdapter): + def process(self, msg, kwargs): + return ( + '[%s:%05u] %s' % (self.extra['filename'], self.extra['page'], msg), + kwargs, + ) + + +def get_logger(options=None, prefix='ocrmypdf', filename=None, page=None): + log = logging.getLogger(prefix) + if filename and page: + adapter = LogNamePageAdapter(log, dict(filename=filename, page=page)) + elif filename: + adapter = LogNameAdapter(log, dict(filename=filename)) + else: + adapter = log + if options.quiet: + log.setLevel(logging.ERROR) + elif options.verbose >= 2: + log.setLevel(logging.DEBUG) + else: + log.setLevel(logging.INFO) + return adapter