void logFailureReason(final ReferenceDataResult result,
                          final XPathContext context,
                          final boolean ignoreWarnings,
                          final boolean trace) {

        final List<PipelineReference> pipelineReferences = getPipelineReferences();
        final Severity maxSeverity = getMaxSeverity(result);

        if (pipelineReferences.isEmpty()) {
            outputInfo(
                    maxSeverity.atLeast(Severity.ERROR),
                    () -> "No reference loaders are configured so the lookup cannot be performed. ",
                    result.getCurrentLookupIdentifier(),
                    trace,
                    ignoreWarnings,
                    result,
                    context);

        } else if (!ignoreWarnings && result.getEffectiveStreams().isEmpty()) {
            // No effective streams were found to lookup from
            if (NullSafe.hasItems(pipelineReferences)) {
                final String feeds = pipelineReferences.stream()
                        .map(pipeRef -> NullSafe.get(pipeRef, PipelineReference::getFeed, DocRef::getName))
                        .filter(Objects::nonNull)
                        .map(name -> "'" + name + "'")
                        .collect(Collectors.joining(", "));

                outputInfo(
                        maxSeverity.atLeast(Severity.WARNING),
                        () -> LogUtil.message(
                                "No effective streams found in any of the reference loaders (feeds: [{}]). " +
                                "Do reference data streams exist for the lookup time? ",
                                feeds),
                        result.getCurrentLookupIdentifier(),
                        trace,
                        ignoreWarnings,
                        result,
                        context);
            }
        } else if (!ignoreWarnings && result.getQualifyingStreams().isEmpty()) {
            // None of the effective streams contains the map
            outputInfo(
                    maxSeverity.atLeast(Severity.WARNING),
                    () -> "Map not found in effective streams [" + getQualifiedEffectiveStreamIds(result) + "] ",
                    result.getCurrentLookupIdentifier(),
                    trace,
                    ignoreWarnings,
                    result,
                    context);
        } else if (maxSeverity.greaterThanOrEqual(Severity.ERROR)) {
            outputInfo(
                    maxSeverity.atLeast(Severity.ERROR),
                    () -> "Errors found during lookup ",
                    result.getCurrentLookupIdentifier(),
                    trace,
                    ignoreWarnings,
                    result,
                    context);
        }
    }
Log a lookup failing to return a value.  Whether it actually logs depends on things like
whether there were any errors, state of ignoreWarnings, state of trace, etc.
stroom-pipeline/src/main/java/stroom/pipeline/xsltfunctions/AbstractLookup.java