From 495fd64041909d07fe9ba57cbf4274a9db1a9ea3 Mon Sep 17 00:00:00 2001 From: Valeriy Savchenko Date: Tue, 9 Jun 2020 12:33:56 +0300 Subject: [PATCH] [analyzer] SATest: Use logger in single-threaded mode as well Summary: It generalizes the way the output looks across any -jN. Additionally it solves the buffering problems. Differential Revision: https://reviews.llvm.org/D81601 --- clang/utils/analyzer/SATestBuild.py | 39 +++++++++++++++-------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/clang/utils/analyzer/SATestBuild.py b/clang/utils/analyzer/SATestBuild.py index af32f40c61c9..7d337632744f 100644 --- a/clang/utils/analyzer/SATestBuild.py +++ b/clang/utils/analyzer/SATestBuild.py @@ -70,9 +70,27 @@ from typing import Dict, IO, List, NamedTuple, Optional, TYPE_CHECKING # Helper functions. ############################################################################### +class StreamToLogger: + def __init__(self, logger: logging.Logger, + log_level: int = logging.INFO): + self.logger = logger + self.log_level = log_level + + def write(self, message: str): + # Rstrip in order not to write an extra newline. + self.logger.log(self.log_level, message.rstrip()) + + def flush(self): + pass + + def fileno(self) -> int: + return 0 + + +Logger = logging.getLogger("main") LOCAL = threading.local() -LOCAL.stdout = sys.stdout -LOCAL.stderr = sys.stderr +LOCAL.stdout = StreamToLogger(Logger, logging.INFO) +LOCAL.stderr = StreamToLogger(Logger, logging.ERROR) def stderr(message: str): @@ -164,23 +182,6 @@ CHECKERS = ",".join([ VERBOSE = 0 -class StreamToLogger: - def __init__(self, logger: logging.Logger, - log_level: int = logging.INFO): - self.logger = logger - self.log_level = log_level - - def write(self, message: str): - # Rstrip in order not to write an extra newline. - self.logger.log(self.log_level, message.rstrip()) - - def flush(self): - pass - - def fileno(self) -> int: - return 0 - - ############################################################################### # Test harness logic. ###############################################################################