I'm not sure as there is no DTD for logback.xml due to the complexity of it. It probably reconfigures the root logger for each element it sees, but I'm really not going to dig through the code to confirm that.If you look at Chp 3 Configuration Syntax, you'll notice a diagram explaining the high-level elements and their cardinality within the configuration file with only a single root element.On Mon, Mar 27, 2017 at 8:40 AM, Thomas Grainger <tagrain@gmail.com> wrote:ah ok, why did my application boot with the first configuration? Is that a logback bug?Thomas GraingerOn 27 March 2017 at 13:39, Andrew Feller <afeller@bandwidth.com> wrote:You can only have a single root element. If you want to filter log events by severity / priority by appender, then you should use the ThresholdFilter filter per appender.On Mon, Mar 27, 2017 at 4:42 AM, Thomas Grainger <tagrain@gmail.com> wrote:______________________________When I configure a filter, my process doesn't even boot, with no error message at all:I have a config file:However, even though I have root level="WARN" for Sentry, I get all logging events (eg INFO level)
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<contextListener class="com.procensus.backend.logging.LoggerStartupListener"/ >
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/application.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
</encoder>
</appender>
<appender name="CLOUDWATCH_SYNC" class="ca.pjer.logback.AwsLogsAppender">
<logRegion>eu-west-1</logRegion>
<logGroupName>procensus/backend</logGroupName>
<logStreamName>${EC2_METADATA_IP_ADDRESS}</logStreamName>
<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>false</prettyPrint>
</jsonFormatter>
</layout>
</appender>
<appender name="CLOUDWATCH" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="CLOUDWATCH_SYNC"/>
</appender>
<appender name="SENTRY" class="com.getsentry.raven.logback.SentryAppender">
<dsn>https://redacted:redacted@sentry.io/redacted </dsn>
</appender>
<logger name="play" level="INFO" />
<logger name="application" level="DEBUG" />
<!-- Off these ones as they are annoying, and anyway we manage configuration ourself -->
<logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" />
<logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />
<logger name="com.amazonaws.request" level="OFF" />
<root level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<root level="INFO">
<appender-ref ref="CLOUDWATCH" />
</root>
<root level="WARN">
<appender-ref ref="SENTRY" />
</root>
</configuration>
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<contextListener class="com.procensus.backend.logging.LoggerStartupListener"/ >
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/application.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
</encoder>
</appender>
<appender name="CLOUDWATCH_SYNC" class="ca.pjer.logback.AwsLogsAppender">
<logRegion>eu-west-1</logRegion>
<logGroupName>procensus/backend</logGroupName>
<logStreamName>${EC2_METADATA_IP_ADDRESS}</logStreamName>
<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>false</prettyPrint>
</jsonFormatter>
</layout>
</appender>
<appender name="CLOUDWATCH" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="CLOUDWATCH_SYNC"/>
</appender>
<appender name="SENTRY" class="com.getsentry.raven.logback.SentryAppender">
<dsn>https://redacted:redacted@sentry.io/redacted </dsn>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<logger name="play" level="INFO" />
<logger name="application" level="DEBUG" />
<!-- Off these ones as they are annoying, and anyway we manage configuration ourself -->
<logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" />
<logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />
<logger name="com.amazonaws.request" level="OFF" />
<root level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<root level="INFO">
<appender-ref ref="CLOUDWATCH" />
</root>
<root level="WARN">
<appender-ref ref="SENTRY" />
</root>
</configuration>Thomas Grainger_________________
logback-user mailing list
logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user --
Andy Feller
Sr. DevOps Engineer
900 Main Campus Drive, Suite 500Raleigh, NC 27606
_______________________________________________
logback-user mailing list
logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user
_______________________________________________
logback-user mailing list
logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user --
Andy Feller
Sr. DevOps Engineer
900 Main Campus Drive, Suite 500Raleigh, NC 27606
_______________________________________________
logback-user mailing list
logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user