summaryrefslogtreecommitdiff
path: root/tests/lldb/tests/harness/util_log.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lldb/tests/harness/util_log.py')
-rw-r--r--tests/lldb/tests/harness/util_log.py141
1 files changed, 0 insertions, 141 deletions
diff --git a/tests/lldb/tests/harness/util_log.py b/tests/lldb/tests/harness/util_log.py
deleted file mode 100644
index fec07036..00000000
--- a/tests/lldb/tests/harness/util_log.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-'''Initialise the Python logging facility for the test suite.
-
-from __future__ import absolute_import
-
-It provides the function to initialise the logging facility and retrieve an
-instance of the logger class. It also contains the definition of the internal
-logger class.
-'''
-from __future__ import print_function
-
-import io
-import sys
-import logging
-
-
-INITIALISED = False
-NAMESPACE = 'RS_LLDB_TESTSUITE'
-
-def initialise(identifier, level=logging.INFO, print_to_stdout=False,
- file_path=None, file_mode='a'):
- '''Initialise the logging facility for the test suite.
-
- This function should be invoked only once, at the start of the program, and
- before emitting any log.
-
- Args:
- identifier: String, a label that will be part of each record. It is
- usually the test case name.
- level: Integer, all messages above this log level will be discarded.
- Valid values are those recognised by the python logging module:
- https://docs.python.org/2/library/logging.html#levels .
- print_to_stdout: Boolean, whether the logs should be redirected to
- sys.stdout (true) or stored into a text file (false).
- file_path: String, path to the text file in which to store the logs.
- This option is only meaningful when print_to_stdout = False.
- file_mode: String, the mode to open the text file. Valid modes are
- those recognised by the standard Python `open' function.
- This option is only meaningful when print_to_stdout = False.
-
- Raises:
- RuntimeError: If the logging has already been initialised
- ValueError: If the argument "file_path" has not been provided when
- print_to_stdout=False
- '''
- # pylint: disable=global-statement
- global INITIALISED
- if INITIALISED:
- raise RuntimeError('Already initialised')
-
- # set the logging class
- old_logger_class = logging.getLoggerClass()
- logging.setLoggerClass(RsLogger)
-
- # initialise the Logger
- log = logging.getLogger(NAMESPACE)
- log.setLevel(level) # reject all logs below
-
- # don't propagate the log records to the logging root
- log.propagate = False
-
- # restore the previous class
- logging.setLoggerClass(old_logger_class)
-
- # handler
- if print_to_stdout:
- handler_default = logging.StreamHandler(sys.stdout)
- else:
- if file_path is None:
- raise ValueError('Missing mandatory argument "file_path"')
-
- handler_default = logging.FileHandler(file_path, file_mode)
-
- # Do not filter records in the handler because of the level
- handler_default.setLevel(logging.NOTSET)
-
- # format the message
- handler_default.setFormatter(
- logging.Formatter(
- '%(asctime)s [{0}] [%(levelname)s] %(message)s'
- .format(identifier)
- ))
-
- log.addHandler(handler_default)
-
- INITIALISED = True
-
-
-class RsLogger(logging.getLoggerClass()):
- '''Internal logging class.
-
- This is an internal class to enhance the logging facility with the methods
- "log_and_print" and "seek_to_end".
- '''
- # pylint: disable=too-many-public-methods
-
- def log_and_print(self, msg, level=logging.INFO):
- '''Print "msg" to stdout and emit a log record.
-
- Args:
- msg: The message to emit.
- level: The level to use. By default it is logging.INFO.
- '''
- print(msg)
- self.log(level, msg)
-
- def seek_to_end(self):
- '''Reset the cursor position to the end for all handlers that are
- Text File managers.'''
- for hndlr in self.handlers:
- if isinstance(hndlr, logging.FileHandler):
- hndlr.stream.seek(0, io.SEEK_END)
-
-
-def get_logger():
- '''Retrieves the Logger instance related to the testsuite.
-
- Throws:
- RuntimeError: If the logging facility has not been initialised with
- "initialise" beforehand.
-
- Returns:
- An instance of logging.Logger to write the logs.
- '''
- if not INITIALISED:
- raise RuntimeError('Logging facility not initialised')
-
- return logging.getLogger(NAMESPACE)