Uploaded image for project: 'logback'
  1. logback
  2. LOGBACK-1713

AppenderFactory not set in SiftingAppender

    XMLWordPrintable

Details

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • 1.3.6, 1.4.6
    • 1.4.5
    • logback-classic
    • None
    • Classic Spring Web Application (no Spring Boot)
      Tomcat 9
      Java 17

    Description

      We use the ch.qos.logback.classic.sift.SiftingAppender to create a separate log file for each of our imports. For that end we create a property importLogFile and put it into the MDC, the config looks as follows:

      <appender name="MyImport" class="ch.qos.logback.classic.sift.SiftingAppender">
      	<discriminator>
      		<key>importLogFile</key>
      		<defaultValue>undefined</defaultValue>
      	</discriminator>
      	<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
      		<evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
      			<expression>
                      return mdc == null || mdc.get("importLogFile") == null;
                  </expression>
      		</evaluator>
      		<OnMismatch>NEUTRAL</OnMismatch>
      		<OnMatch>DENY</OnMatch>
      	</filter>
      	<sift>
      		<appender name="FILE-${importLogFile}" class="ch.qos.logback.core.FileAppender">
      			<file>${importLogFile}</file>
      			<append>false</append>
      			<layout class="ch.qos.logback.classic.PatternLayout">
      				<pattern>%d %level %logger{35} - %msg%n</pattern>
      			</layout>
      		</appender>
      	</sift>
      </appender>
      

      We followed the docs in that matter, see here.

      This worked flawlessly while we were using logback 1.2.x. With the update to version 1.3 though, the initialization process seems to have changed. We're trying to use the latest version (1.4.5 (ch.qos.logback:logback-classic:1.4.5), and now instead of separate log files we get following error message during startup of our web app:

      Appender named [FILE-importLogFile_IS_UNDEFINED] not referenced. Skipping further processing.
      ERROR in ch.qos.logback.classic.sift.SiftingAppender[MyImport] - AppenderFactory has not been set. Aborting
      

      I did not find a solution for this in the logback docs. There were changes concerning the usage of nested appenders (some other log messages indicate as much) but as far as I understand the SiftingAppender does not really fall under that category - and the docs mentioned above haven't been changed, so I guess that approach should still be valid.

      Attachments

        Activity

          People

            ceki Ceki Gülcü
            Torgeist Andree Wormuth
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: