bitbake: toaster: Record critical errors
Critical errors (where a build failed for reasons of misconfiguration, such as a machine being specified which is not in a project's layers) were being ignored (only log records up to ERROR level were being logged to Toaster's db). This meant that the build would fail but would not correctly report why. Add support for CRITICAL error levels to the LogMessage model, include errors at this level in the errors property for a build, and show errors at this level in the build dashboard. [YOCTO #8320] (Bitbake rev: b6eacbca9cacb607de864ab7d093deb296da8226) Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
069a611097
commit
93f0b61749
|
@ -1394,7 +1394,9 @@ class BuildInfoHelper(object):
|
|||
|
||||
log_information = {}
|
||||
log_information['build'] = self.internal_state['build']
|
||||
if event.levelno == formatter.ERROR:
|
||||
if event.levelno == formatter.CRITICAL:
|
||||
log_information['level'] = LogMessage.CRITICAL
|
||||
elif event.levelno == formatter.ERROR:
|
||||
log_information['level'] = LogMessage.ERROR
|
||||
elif event.levelno == formatter.WARNING:
|
||||
log_information['level'] = LogMessage.WARNING
|
||||
|
@ -1407,6 +1409,7 @@ class BuildInfoHelper(object):
|
|||
log_information['pathname'] = event.pathname
|
||||
log_information['lineno'] = event.lineno
|
||||
logger.info("Logging error 2: %s", log_information)
|
||||
|
||||
self.orm_wrapper.create_logmessage(log_information)
|
||||
|
||||
def close(self, errorcode):
|
||||
|
|
|
@ -145,10 +145,12 @@ def main(server, eventHandler, params ):
|
|||
event.levelno = formatter.ERROR
|
||||
|
||||
buildinfohelper.store_log_event(event)
|
||||
|
||||
if event.levelno >= formatter.ERROR:
|
||||
errors = errors + 1
|
||||
elif event.levelno == formatter.WARNING:
|
||||
warnings = warnings + 1
|
||||
|
||||
# For "normal" logging conditions, don't show note logs from tasks
|
||||
# but do show them if the user has changed the default log level to
|
||||
# include verbose/debug messages
|
||||
|
|
|
@ -353,7 +353,9 @@ class Build(models.Model):
|
|||
|
||||
@property
|
||||
def errors(self):
|
||||
return (self.logmessage_set.filter(level=LogMessage.ERROR)|self.logmessage_set.filter(level=LogMessage.EXCEPTION))
|
||||
return (self.logmessage_set.filter(level=LogMessage.ERROR) |
|
||||
self.logmessage_set.filter(level=LogMessage.EXCEPTION) |
|
||||
self.logmessage_set.filter(level=LogMessage.CRITICAL))
|
||||
|
||||
@property
|
||||
def warnings(self):
|
||||
|
@ -1285,16 +1287,20 @@ class LogMessage(models.Model):
|
|||
INFO = 0
|
||||
WARNING = 1
|
||||
ERROR = 2
|
||||
CRITICAL = 3
|
||||
|
||||
LOG_LEVEL = ( (INFO, "info"),
|
||||
(WARNING, "warn"),
|
||||
(ERROR, "error"),
|
||||
(EXCEPTION, "toaster exception"))
|
||||
LOG_LEVEL = (
|
||||
(INFO, "info"),
|
||||
(WARNING, "warn"),
|
||||
(ERROR, "error"),
|
||||
(CRITICAL, "critical"),
|
||||
(EXCEPTION, "toaster exception")
|
||||
)
|
||||
|
||||
build = models.ForeignKey(Build)
|
||||
task = models.ForeignKey(Task, blank = True, null=True)
|
||||
level = models.IntegerField(choices=LOG_LEVEL, default=INFO)
|
||||
message=models.CharField(max_length=240)
|
||||
message = models.CharField(max_length=240)
|
||||
pathname = models.FilePathField(max_length=255, blank=True)
|
||||
lineno = models.IntegerField(null=True)
|
||||
|
||||
|
|
|
@ -69,11 +69,12 @@
|
|||
<div class="accordion-body collapse in" id="collapse-errors">
|
||||
<div class="accordion-inner">
|
||||
<div class="span10">
|
||||
{% for error in logmessages %}{% if error.level == 2 %}
|
||||
<div class="alert alert-error">
|
||||
<pre>{{error.message}}</pre>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% for error in logmessages %}
|
||||
{% if error.level == 2 or error.level == 3 %}
|
||||
<div class="alert alert-error">
|
||||
<pre>{{error.message}}</pre>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue