Pierre Villard created NIFI-4277:
------------------------------------
Summary: StandardLogRepository does not log exceptions
Key: NIFI-4277
URL: https://issues.apache.org/jira/browse/NIFI-4277
Project: Apache NiFi
Issue Type: Bug
Components: Core Framework
Affects Versions: 1.3.0
Reporter: Pierre Villard
Assignee: Pierre Villard
Attachments: Screen Shot 2017-08-08 at 2.48.33 PM.png
When logging a message, it is logged with the SLF4J logger and also stored in
the standard log repository (for the bulletins). However if the array of
objects contains the exception (and not the message of the exception), this
exception won't be displayed in the bulletin message.
!Screen Shot 2017-08-08 at 2.48.33 PM.png|thumbnail!
That's because of:
{code:title=StandardLogRepository.java|borderStyle=solid}
@Override
public void addLogMessage(final LogLevel level, final String format, final
Object[] params) {
final String formattedMessage = MessageFormatter.arrayFormat(format,
params).getMessage();
addLogMessage(level, formattedMessage);
}
{code}
If the params object contains a Throwable object, it'll be removed from the
array in the {{MessageFormatter}}:
{code:title=MessageFormatter.java|borderStyle=solid}
final public static FormattingTuple arrayFormat(final String
messagePattern, final Object[] argArray) {
Throwable throwableCandidate = getThrowableCandidate(argArray);
Object[] args = argArray;
if (throwableCandidate != null) {
args = trimmedCopy(argArray);
}
return arrayFormat(messagePattern, args, throwableCandidate);
}
{code}
Easy solution would be to change:
{noformat}
logger.debug("Failed to validate {} against schema due to {}", new
Object[]{flowFile, e});
{noformat}
into:
{noformat}
logger.debug("Failed to validate {} against schema due to {}", new
Object[]{flowFile, e.getLocalizedMessage()});
{noformat}
However this pattern can be found in quite a large number of places... And it'd
be certainly better to provide a permanent solution supporting the existing
pattern. Suggestion is to modify the method in {{StandardLogRepository}} to go
through all the items of the array and for each Throwable object, replace it by
the localized message.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)