Skip to content

Commit 65c10f7

Browse files
maarztctrueden
authored andcommitted
Set source-dependent log levels via properties
And test it. Signed-off-by: Curtis Rueden <ctrueden@wisc.edu>
1 parent f26d021 commit 65c10f7

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/main/java/org/scijava/log/AbstractLogService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public AbstractLogService(final Properties properties) {
7070
if (level >= 0) currentLevel = level;
7171
classAndPackageLevels = setupMapFromProperties(properties,
7272
LogService.LOG_LEVEL_PROPERTY + ":");
73+
initLogSourceLevels(properties);
7374
}
7475

7576
// -- AbstractLogService methods --
@@ -140,6 +141,12 @@ protected String getPrefix(final int level) {
140141

141142
// -- Helper methods --
142143

144+
private void initLogSourceLevels(Properties properties) {
145+
Map<String, Integer> nameLevels = setupMapFromProperties(properties,
146+
LOG_LEVEL_BY_SOURCE_PROPERTY + ":");
147+
nameLevels.forEach(this::setLevelForLogger);
148+
}
149+
143150
private int getLevelForClass(String classOrPackageName, int defaultLevel) {
144151
// check for a custom log level for calling class or its parent packages
145152
while (classOrPackageName != null) {

src/test/java/org/scijava/log/LogServiceTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,16 @@ public void testSubLoggerLogLevel() {
165165
assertEquals(LogLevel.TRACE, sub.getLevel());
166166
}
167167

168+
@Test
169+
public void testSubLoggerLogLevelViaProperties() {
170+
Properties properties = new Properties();
171+
properties.setProperty(LogService.LOG_LEVEL_BY_SOURCE_PROPERTY + ":Hello:World", LogLevel.prefix(LogLevel.ERROR));
172+
properties.setProperty(LogService.LOG_LEVEL_BY_SOURCE_PROPERTY + ":foo:bar", LogLevel.prefix(LogLevel.TRACE));
173+
final LogService log = new TestableLogService(properties);
174+
Logger sub = log.subLogger("foo").subLogger("bar");
175+
assertEquals(LogLevel.TRACE, sub.getLevel());
176+
}
177+
168178
@Test
169179
public void testPackageLogLevel() {
170180
final LogService log = new TestableLogService();

0 commit comments

Comments
 (0)