summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/CHANGES6
-rw-r--r--java/src/Ice/PropertiesI.java7
-rw-r--r--java/src/Ice/Util.java28
-rw-r--r--java/src/IceInternal/Instance.java2
4 files changed, 38 insertions, 5 deletions
diff --git a/java/CHANGES b/java/CHANGES
index 3920849a808..9dfcbf05699 100644
--- a/java/CHANGES
+++ b/java/CHANGES
@@ -1,6 +1,12 @@
Changes since version 3.1.1
---------------------------
+- Added a per-process logger and two methods to get/set the logger,
+ Ice.Util.getProcessLogger() and Ice.Util.setProcessLogger(). Get will
+ create a default process logger when called if set has not been called.
+ The process logger will also be used as the default logger for all
+ communicators that do not have a logger explicitly set.
+
- Added support to Ice.Application for shutdown hooks. See
Ice.Application.setInterruptHook for details.
diff --git a/java/src/Ice/PropertiesI.java b/java/src/Ice/PropertiesI.java
index 3afe19d520c..bed28124d00 100644
--- a/java/src/Ice/PropertiesI.java
+++ b/java/src/Ice/PropertiesI.java
@@ -92,10 +92,9 @@ public final class PropertiesI extends LocalObjectImpl implements Properties
setProperty(String key, String value)
{
//
- // Check if the property is legal. (We write to System.err instead of using
- // a logger because no logger may be established at the time the property
- // is parsed.)
+ // Check if the property is legal.
//
+ Logger logger = Ice.Util.getProcessLogger();
if(key == null || key.length() == 0)
{
return;
@@ -126,7 +125,7 @@ public final class PropertiesI extends LocalObjectImpl implements Properties
}
if(!found)
{
- System.err.println("warning: unknown property: " + key);
+ logger.warning("unknown property: " + key);
}
}
}
diff --git a/java/src/Ice/Util.java b/java/src/Ice/Util.java
index 586d5fb3162..df0254f0e07 100644
--- a/java/src/Ice/Util.java
+++ b/java/src/Ice/Util.java
@@ -382,5 +382,33 @@ public final class Util
return new OutputStreamI(communicator);
}
+ public static Logger
+ getProcessLogger()
+ {
+ synchronized(_processLoggerMutex)
+ {
+ if(_processLogger == null)
+ {
+ //
+ // TODO: Would be nice to be able to use process name as prefix by default.
+ //
+ _processLogger = new LoggerI("");
+ }
+
+ return _processLogger;
+ }
+ }
+
+ public static void
+ setProcessLogger(Logger logger)
+ {
+ synchronized(_processLoggerMutex)
+ {
+ _processLogger = logger;
+ }
+ }
+
private static String _localAddress = null;
+ private static java.lang.Object _processLoggerMutex = new java.lang.Object();
+ private static Logger _processLogger = null;
}
diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java
index a2a82c6d21b..ece93c9b020 100644
--- a/java/src/IceInternal/Instance.java
+++ b/java/src/IceInternal/Instance.java
@@ -368,7 +368,7 @@ public final class Instance
}
else
{
- _initData.logger = new Ice.LoggerI(_initData.properties.getProperty("Ice.ProgramName"));
+ _initData.logger = Ice.Util.getProcessLogger();
}
}