| Index: client/cros/cros_logging.py
|
| diff --git a/client/cros/cros_logging.py b/client/cros/cros_logging.py
|
| index ecdc1e43f7adae53cb2b032d6a4ae3d0755e2454..cc1f636071f845d2772c130a6db49bcb30c4813b 100644
|
| --- a/client/cros/cros_logging.py
|
| +++ b/client/cros/cros_logging.py
|
| @@ -13,36 +13,14 @@ class LogReader(object):
|
| A class to read system log files.
|
| """
|
|
|
| - def __init__(self, filename='/var/log/messages', include_rotated_logs=True):
|
| + def __init__(self, filename='/var/log/messages'):
|
| self._start_line = 1
|
| self._filename = filename
|
| - self._include_rotated_logs = include_rotated_logs
|
| if not os.path.exists(CLEANUP_LOGS_PAUSED_FILE):
|
| raise error.TestError('LogReader created without ' +
|
| CLEANUP_LOGS_PAUSED_FILE)
|
|
|
|
|
| - def read_all_logs(self, start=1):
|
| - """Read all content from log files.
|
| -
|
| - Generator function.
|
| - Return an iterator on the content of files.
|
| - """
|
| - log_files = []
|
| - line_number = 1
|
| - if self._include_rotated_logs:
|
| - log_files.extend(utils.system_output(
|
| - 'ls -tr1 %s.*' % self._filename,
|
| - ignore_status=True).splitlines())
|
| - log_files.append(self._filename)
|
| - for log_file in log_files:
|
| - f = open(log_file)
|
| - for line in f:
|
| - if line_number >= start:
|
| - yield line
|
| - line_number += 1
|
| -
|
| -
|
| def set_start_by_regexp(self, index, regexp):
|
| """Set the start of logs based on a regular expression.
|
|
|
| @@ -50,16 +28,17 @@ class LogReader(object):
|
| Negative numbers indicate matches since end of log.
|
| """
|
| regexp_compiled = re.compile(regexp)
|
| + file_handle = open(self._filename, 'r')
|
| starts = []
|
| line_number = 1
|
| - for line in self.read_all_logs():
|
| + for line in file_handle:
|
| if regexp_compiled.match(line):
|
| starts.append(line_number)
|
| line_number += 1
|
| if index < -len(starts):
|
| self._start_line = 1
|
| elif index >= len(starts):
|
| - self._start_line = line_number
|
| + self.set_start_by_current()
|
| else:
|
| self._start_line = starts[index]
|
|
|
| @@ -74,16 +53,14 @@ class LogReader(object):
|
| r'.*000\] Linux version \d')
|
|
|
|
|
| - def set_start_by_current(self, relative=0):
|
| + def set_start_by_current(self, relative=1):
|
| """ Set start of logs based on current last line.
|
|
|
| @param relative: line relative to current to start at. 1 means
|
| to start the log after this line.
|
| """
|
| - count = self._start_line + relative
|
| - for line in self.read_all_logs(start=self._start_line):
|
| - count += 1
|
| - self._start_line = count
|
| + lines = utils.system_output('wc -l %s' % self._filename)
|
| + self._start_line = int(lines.split(' ')[0]) + relative
|
|
|
|
|
| def get_logs(self):
|
| @@ -94,18 +71,15 @@ class LogReader(object):
|
|
|
| @return string of contents of file since start line.
|
| """
|
| - logs = []
|
| - for line in self.read_all_logs(start=self._start_line):
|
| - logs.append(line)
|
| - return '\n'.join(logs)
|
| -
|
| + return utils.system_output('tail -n +%d %s' %
|
| + (self._start_line, self._filename))
|
|
|
| def can_find(self, string):
|
| """ Try to find string in the logs.
|
|
|
| @return boolean indicating if we found the string.
|
| """
|
| - return string in self.read_all_logs(start=self._start_line)
|
| + return string in self.get_logs()
|
|
|
|
|
| class LogRotationPauser(object):
|
|
|