consistency with propertis config for logging
git-svn-id: https://svn.apache.org/repos/asf/openejb/trunk@1431796 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/openejb/container/openejb-core/src/main/java/org/apache/openejb/log/LoggerCreator.java b/openejb/container/openejb-core/src/main/java/org/apache/openejb/log/LoggerCreator.java
index 8385aba..92e0a1a 100644
--- a/openejb/container/openejb-core/src/main/java/org/apache/openejb/log/LoggerCreator.java
+++ b/openejb/container/openejb-core/src/main/java/org/apache/openejb/log/LoggerCreator.java
@@ -32,6 +32,17 @@
public LoggerCreator(final String channel) {
name = channel;
+
+ // force eager init if config overrided
+ final Properties p = SystemInstance.get().getProperties();
+ final String levelName = p.getProperty("logging.level." + channel);
+ if (levelName != null) {
+ try {
+ call();
+ } catch (Exception e) {
+ // no-op
+ }
+ }
}
@Override
@@ -62,12 +73,16 @@
return logger;
}
+ public boolean isInit() {
+ return init;
+ }
+
public static final class Get {
private Get() {
// no-op
}
- public static Logger exec(final LoggerCreator creator) {
+ private static Logger exec(final LoggerCreator creator) {
try {
return creator.call();
} catch (Exception e) { // shouldn't occur regarding the impl we use
@@ -78,10 +93,21 @@
public static Logger exec(final LoggerCreator logger, final AtomicBoolean debug, final AtomicBoolean info) {
final Logger l = exec(logger);
if (!logger.init) {
- debug.set(l.isLoggable(Level.FINE));
- info.set(l.isLoggable(Level.INFO));
+ levels(logger, debug, info);
}
return l;
}
+
+ public static void levels(final LoggerCreator lc, final AtomicBoolean debug, final AtomicBoolean info) {
+ final Logger l;
+ try {
+ l = lc.call();
+ } catch (Exception e) {
+ return;
+ }
+
+ debug.set(l.isLoggable(Level.FINE));
+ info.set(l.isLoggable(Level.INFO));
+ }
}
}
diff --git a/openejb/container/openejb-core/src/main/java/org/apache/openejb/openjpa/JULOpenJPALog.java b/openejb/container/openejb-core/src/main/java/org/apache/openejb/openjpa/JULOpenJPALog.java
index f611f29..e54b74d 100644
--- a/openejb/container/openejb-core/src/main/java/org/apache/openejb/openjpa/JULOpenJPALog.java
+++ b/openejb/container/openejb-core/src/main/java/org/apache/openejb/openjpa/JULOpenJPALog.java
@@ -32,6 +32,9 @@
public JULOpenJPALog(final LoggerCreator delegate) {
logger = delegate;
+ if (logger.isInit()) {
+ LoggerCreator.Get.levels(logger, debug, info);
+ }
}
private Logger logger() {
diff --git a/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java b/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java
index 19605a1..7f779ef 100644
--- a/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java
+++ b/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java
@@ -30,6 +30,9 @@
public JuliLogStream(LogCategory logCategory) {
logger = new LoggerCreator(logCategory.getName());
+ if (logger.isInit()) {
+ LoggerCreator.Get.levels(logger, debug, info);
+ }
}
public boolean isFatalEnabled() {
@@ -57,7 +60,7 @@
}
public boolean isWarnEnabled() {
- return LoggerCreator.Get.exec(logger).isLoggable(Level.WARNING);
+ return LoggerCreator.Get.exec(logger, debug, info).isLoggable(Level.WARNING);
}
public void warn(String message) {
@@ -69,7 +72,7 @@
}
public boolean isInfoEnabled() {
- return LoggerCreator.Get.exec(logger).isLoggable(Level.INFO);
+ return LoggerCreator.Get.exec(logger, debug, info).isLoggable(Level.INFO);
}
public void info(String message) {
@@ -93,7 +96,7 @@
}
private void log(Level level, String message, Throwable t) {
- final Logger log = LoggerCreator.Get.exec(logger);
+ final Logger log = LoggerCreator.Get.exec(logger, debug, info);
if (log.isLoggable(level)) {
LogRecord logRecord = new OpenEJBLogRecord(level, message);
if (t != null) logRecord.setThrown(t);