Skip to content

Commit

Permalink
fix LOGBACK-1698, [Nested appenders are not allowed] warning using Si…
Browse files Browse the repository at this point in the history
…ftingAppender

Signed-off-by: Ceki Gulcu <ceki@qos.ch>
  • Loading branch information
ceki committed Nov 18, 2022
1 parent a64b8d4 commit 0d3ac63
Show file tree
Hide file tree
Showing 16 changed files with 32 additions and 17 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

<configuration debug="true">
<configuration debug="false">

<property name="X" value="composite"/>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
Expand Down
2 changes: 1 addition & 1 deletion logback-classic/src/test/input/joran/sift/fileAppender.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">

Expand Down
2 changes: 1 addition & 1 deletion logback-classic/src/test/input/joran/sift/hoard0.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">

Expand Down
2 changes: 1 addition & 1 deletion logback-classic/src/test/input/joran/sift/lingering.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<configuration debug="true">
<configuration debug="false">


<property name="X" value="Y"/>
Expand Down
2 changes: 1 addition & 1 deletion logback-classic/src/test/input/joran/sift/smoke.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">

Expand Down
2 changes: 1 addition & 1 deletion logback-classic/src/test/input/joran/sift/timeout.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">

Expand Down
2 changes: 1 addition & 1 deletion logback-classic/src/test/input/joran/sift/zeroNesting.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>

<configuration debug="true">
<configuration debug="false">

<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ public void smoke() throws JoranException {
List<ILoggingEvent> eventList = listAppender.list;
assertEquals(1, listAppender.list.size());
assertEquals("smoke", eventList.get(0).getMessage());
statusChecker.assertIsWarningOrErrorFree();
}

private AppenderTracker<ILoggingEvent> getAppenderTracker() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class AppenderWithinAppenderSanityChecker extends ContextAwareBase implements SanityChecker {

Expand All @@ -34,13 +35,26 @@ public void check(Model model) {

List<Pair<Model, Model>> nestedPairs = deepFindNestedSubModelsOfType(AppenderModel.class, appenderModels);

if(nestedPairs.isEmpty())
return;
List<Pair<Model, Model>> filteredNestedPairs = nestedPairs.stream().filter(pair -> !isSiftingAppender(pair.first)).collect(Collectors.toList());

if(filteredNestedPairs.isEmpty()) {
return;
}
addWarn(NESTED_APPENDERS_WARNING);
for(Pair<Model, Model> pair: nestedPairs) {
for(Pair<Model, Model> pair: filteredNestedPairs) {
addWarn("Appender at line "+pair.first.getLineNumber() + " contains a nested appender at line "+pair.second.getLineNumber());
}
}

private boolean isSiftingAppender(Model first) {
if(first instanceof AppenderModel) {
AppenderModel appenderModel = (AppenderModel) first;
String classname = appenderModel.getClassName();
if(classname == null)
return false;
return appenderModel.getClassName().contains("SiftingAppender");
}
return false;
}

}

0 comments on commit 0d3ac63

Please sign in to comment.