INT-4407: Add merge option to Log4j2LevelAdjuster

JIRA: https://jira.spring.io/browse/INT-4407

To make a `Log4j2LevelAdjuster` more builder friendly, add a `merge`
option to the overloaded `classes()` and `categories()` methods.
This way the existing (or previously configured) `categories` and
`classes` are merged with the provided values and default
`org.springframework.integration` category can be reuse.

Note: this behavior can be reconsidered as default one in the `5.1`
This commit is contained in:
Artem Bilan
2018-02-20 14:58:52 -05:00
committed by Gary Russell
parent 4bb4a0187a
commit e46fc9b738
6 changed files with 40 additions and 12 deletions

View File

@@ -163,7 +163,22 @@ public class Log4j2LevelAdjuster implements MethodRule {
* @return a Log4j2LevelAdjuster copy with the provided classes
*/
public Log4j2LevelAdjuster classes(Class<?>... classes) {
return new Log4j2LevelAdjuster(this.level, classes, this.categories);
return classes(false, classes);
}
/**
* Specify the classes for logging level adjusting configured before.
* A new copy Log4j2LevelAdjuster instance is produced by this method.
* The provided classes parameter can be merged with existing value in the {@link #classes}.
* @param merge to merge or not with previously configured {@link #classes}
* @param classes the classes to use for logging level adjusting
* @return a Log4j2LevelAdjuster copy with the provided classes
* @since 5.0.2
*/
public Log4j2LevelAdjuster classes(boolean merge, Class<?>... classes) {
return new Log4j2LevelAdjuster(this.level,
merge ? Stream.of(this.classes, classes).flatMap(Stream::of).toArray(Class<?>[]::new) : classes,
this.categories);
}
/**
@@ -174,7 +189,21 @@ public class Log4j2LevelAdjuster implements MethodRule {
* @return a Log4j2LevelAdjuster copy with the provided categories
*/
public Log4j2LevelAdjuster categories(String... categories) {
return new Log4j2LevelAdjuster(this.level, this.classes, categories);
return categories(false, categories);
}
/**
* Specify the categories for logging level adjusting configured before.
* A new copy Log4j2LevelAdjuster instance is produced by this method.
* The provided categories parameter can be merged with existing value in the {@link #categories}.
* @param merge to merge or not with previously configured {@link #categories}
* @param categories the categories to use for logging level adjusting
* @return a Log4j2LevelAdjuster copy with the provided categories
* @since 5.0.2
*/
public Log4j2LevelAdjuster categories(boolean merge, String... categories) {
return new Log4j2LevelAdjuster(this.level, this.classes,
merge ? Stream.of(this.categories, categories).flatMap(Stream::of).toArray(String[]::new) : categories);
}
/**