*tl;dr:* When using TestRunner, I can only get logging to log to the console/standard out when logback-classic is present in the test-scope.
Is it safe to say that NiFi, when using the TestRunner, requires logback-classic to be present in the test scope in the pom.xml? I've got my stuff working now, if there's any documentation on the logging that I'm missing that might explain this, or the minimum dependencies required type thing, I'd be interested in seeing, or contributing some notes if not. Thanks, Ryan Some trial/errors: I've tried a couple options here: 1) slf4j-simple in pom.xml and logback-test.xml RESULTS: No console output. Stacktrace #1 below 2) [logback-*core + *slf4j-api] and logback-test.xml RESULTS: No console output. Stacktrace #1 below 3) [logback-*classic*] and logback-test.xml RESULTS: Console output successful. 4) [logback-*classic*] alone RESULTS: Console output successful. 5) Nothing in pom.xml for logging RESULTS: No console output. Stacktrace #2 below Another note: Throughout all of this, except with logback-classic, I've been seeing this stacktrace pop-up at this line: # TestRunner runner = TestRunners.newTestRunner(processor); *Stacktrace #1* Failed to instantiate [ch.qos.logback.classic.LoggerContext] Reported exception: java.lang.AbstractMethodError: ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(Lch/qos/logback/core/Context;Lch/qos/logback/core/pattern/Converter;)V at ch.qos.logback.core.pattern.PatternLayoutBase.start(PatternLayoutBase.java:86) ... at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) at org.apache.nifi.util.MockProvenanceReporter.<clinit>(MockProvenanceReporter.java:36) at org.apache.nifi.util.SharedSessionState.<init>(SharedSessionState.java:45) at org.apache.nifi.util.StandardProcessorTestRunner.<init>(StandardProcessorTestRunner.java:100) at org.apache.nifi.util.TestRunners.newTestRunner(TestRunners.java:24) at org.testing.processors.TestProcessor.testFile(TestProcessor.java:96) *Stacktrace #2* Failed to instantiate [ch.qos.logback.classic.LoggerContext] Reported exception: java.lang.NoSuchMethodError: ch.qos.logback.core.util.loader.getResourceOccurrenceCount(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set; at ch.qos.logback.classic.util.ContextInitializer.multiplicityWarning(ContextInitializer.java:158) ... at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) at org.apache.nifi.util.MockProvenanceReporter.<clinit>(MockProvenanceReporter.java:36) at org.apache.nifi.util.SharedSessionState.<init>(SharedSessionState.java:45) at org.apache.nifi.util.StandardProcessorTestRunner.<init>(StandardProcessorTestRunner.java:100) at org.apache.nifi.util.TestRunners.newTestRunner(TestRunners.java:24) at org.testing.processors.TestProcessor.testFile(TestProcessor.java:96) Is it safe to say that NiFi, when using the TestRunner, requires logback-classic to be present in the test scope? Thanks, Ryan On Wed, Sep 27, 2017 at 11:08 AM, Bryan Bende <[email protected]> wrote: > I think another option is to use the simple SLF4J logger.... > > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-simple</artifactId> > <scope>test</scope> > </dependency> > > Then you probably wouldn't need the logback.xml file since you > wouldn't be logging through logback at that point. > > > On Wed, Sep 27, 2017 at 10:40 AM, Ryan H <[email protected]> > wrote: > > I figured it out... I was missing the logback-test.xml file (now > included) > > and in my pom.xml: > > > > I had: > > <dependency> > > <groupId>ch.qos.logback</groupId> > > <artifactId>logback-core</artifactId> > > <scope>test</scope> > > </dependency> > > > > Instead I swapped to: > > > > <dependency> > > <groupId>ch.qos.logback</groupId> > > <artifactId>logback-classic</artifactId> > > <scope>test</scope> > > </dependency> > > > > And the logs are outputting now. > > > > Ryan > > > > > > On Wed, Sep 27, 2017 at 10:20 AM, Ryan H <[email protected]> > > wrote: > >> > >> Hi Andy, > >> It's a custom processor I'm writing. I was scratching my head > >> wondering if that is it, or adding a test dependency for logback has > >> something to do with it. > >> > >> I just copy/pasted this one: > >> https://github.com/apache/nifi/blob/d838f61291d2582592754a37314911 > b701c6891b/nifi-nar-bundles/nifi-framework-bundle/nifi- > framework/nifi-web/nifi-web-api/src/test/resources/logback-test.xml > >> and droped it into my src/test/resources > >> > >> No such luck at seeing logs yet in my output yet. > >> > >> Ryan > >> > >> On Tue, Sep 26, 2017 at 5:59 PM, Andy LoPresto <[email protected]> > >> wrote: > >>> > >>> Ryan, > >>> > >>> Which module is this running in? Some modules have a logback.xml file > >>> defined in /src/test/resources/logback.xml which configures the test > >>> loggers, while others do not. If this is not configured in your > module, you > >>> won’t see the error messages on the console. You can copy an existing > >>> logback.xml file from one of the other modules (be sure to use one > from the > >>> *test* directory, not the *main* directory). > >>> > >>> > >>> Andy LoPresto > >>> [email protected] > >>> [email protected] > >>> PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4 BACE 3C6E F65B 2F7D EF69 > >>> > >>> On Sep 26, 2017, at 2:51 PM, Ryan H <[email protected]> > wrote: > >>> > >>> Hi, > >>> I'm curious if there's a way to get the ComponentLog to output to > >>> StandardOut during a Unit Test. > >>> > >>> I see I can access them when I call > >>> testRunner.getLogger().getErrorMessages(), however, I'd really like > to see a > >>> stacktrace if it happens without having to iterate through an array to > find > >>> it. > >>> > >>> I feel like I'm just missing something obvious here, I'd appreciate > >>> any advice. > >>> > >>> Thanks, > >>> Ryan > >>> > >>> > >> > > >
