summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/demo/Ice/plugin/LoggerPluginI.cpp6
-rw-r--r--cpp/src/Ice/LoggerI.cpp11
-rw-r--r--cpp/src/Ice/LoggerI.h2
-rw-r--r--cpp/src/Ice/SysLoggerI.cpp6
-rw-r--r--cpp/src/Ice/SysLoggerI.h1
-rw-r--r--cpp/src/IceBox/ServiceManagerI.cpp6
-rw-r--r--cs/demo/Ice/plugin/LoggerI.cs5
-rw-r--r--cs/src/Ice/LoggerI.cs17
-rw-r--r--cs/src/Ice/SysLoggerI.cs5
-rw-r--r--cs/src/IceBox/ServiceManagerI.cs5
-rw-r--r--cs/test/Ice/exceptions/Server.cs5
-rw-r--r--java/demo/Ice/plugin/LoggerI.java6
-rw-r--r--java/src/Ice/LoggerI.java12
-rw-r--r--java/src/Ice/SysLoggerI.java6
-rw-r--r--java/src/IceBox/ServiceManagerI.java5
-rw-r--r--java/test/Ice/exceptions/DummyLogger.java6
-rw-r--r--slice/Ice/Logger.ice10
17 files changed, 108 insertions, 6 deletions
diff --git a/cpp/demo/Ice/plugin/LoggerPluginI.cpp b/cpp/demo/Ice/plugin/LoggerPluginI.cpp
index d3eeefc4d01..cf62c4b72cc 100644
--- a/cpp/demo/Ice/plugin/LoggerPluginI.cpp
+++ b/cpp/demo/Ice/plugin/LoggerPluginI.cpp
@@ -41,6 +41,12 @@ public:
{
cout << "ERROR: " << message << endl;
}
+
+ virtual Ice::LoggerPtr
+ cloneWithPrefix(const std::string&)
+ {
+ return new LoggerI();
+ }
};
};
diff --git a/cpp/src/Ice/LoggerI.cpp b/cpp/src/Ice/LoggerI.cpp
index 634eb5c0c29..d270d2a3e4c 100644
--- a/cpp/src/Ice/LoggerI.cpp
+++ b/cpp/src/Ice/LoggerI.cpp
@@ -51,10 +51,11 @@ Ice::LoggerI::LoggerI(const string& prefix, const string& file)
if(!file.empty())
{
- _out.open(file.c_str(), fstream::out | fstream::app);
+ _file = file;
+ _out.open(_file.c_str(), fstream::out | fstream::app);
if(!_out.is_open())
{
- throw InitializationException(__FILE__, __LINE__, "FileLogger: cannot open " + file);
+ throw InitializationException(__FILE__, __LINE__, "FileLogger: cannot open " + _file);
}
}
}
@@ -99,6 +100,12 @@ Ice::LoggerI::error(const string& message)
write("!! " + IceUtil::Time::now().toDateTime() + " " + _prefix + "error: " + message, true);
}
+LoggerPtr
+Ice::LoggerI::cloneWithPrefix(const std::string& prefix)
+{
+ return new LoggerI(prefix, _file);
+}
+
void
Ice::LoggerI::write(const string& message, bool indent)
{
diff --git a/cpp/src/Ice/LoggerI.h b/cpp/src/Ice/LoggerI.h
index f3d849609b8..880922b5150 100644
--- a/cpp/src/Ice/LoggerI.h
+++ b/cpp/src/Ice/LoggerI.h
@@ -28,6 +28,7 @@ public:
virtual void trace(const std::string&, const std::string&);
virtual void warning(const std::string&);
virtual void error(const std::string&);
+ virtual LoggerPtr cloneWithPrefix(const std::string&);
private:
@@ -35,6 +36,7 @@ private:
std::string _prefix;
std::fstream _out;
+ std::string _file;
};
typedef IceUtil::Handle<LoggerI> LoggerIPtr;
diff --git a/cpp/src/Ice/SysLoggerI.cpp b/cpp/src/Ice/SysLoggerI.cpp
index b3288e9f95d..83feda8f981 100644
--- a/cpp/src/Ice/SysLoggerI.cpp
+++ b/cpp/src/Ice/SysLoggerI.cpp
@@ -54,3 +54,9 @@ Ice::SysLoggerI::error(const string& message)
IceUtil::Mutex::Lock sync(*this);
syslog(LOG_ERR, "%s", message.c_str());
}
+
+Ice::LoggerPtr
+Ice::SysLoggerI::cloneWithPrefix(const string& prefix)
+{
+ return new SysLoggerI(prefix);
+}
diff --git a/cpp/src/Ice/SysLoggerI.h b/cpp/src/Ice/SysLoggerI.h
index 86b71341c35..e6d7bc36e93 100644
--- a/cpp/src/Ice/SysLoggerI.h
+++ b/cpp/src/Ice/SysLoggerI.h
@@ -27,6 +27,7 @@ public:
virtual void trace(const std::string&, const std::string&);
virtual void warning(const std::string&);
virtual void error(const std::string&);
+ virtual LoggerPtr cloneWithPrefix(const std::string&);
};
}
diff --git a/cpp/src/IceBox/ServiceManagerI.cpp b/cpp/src/IceBox/ServiceManagerI.cpp
index 24e8a723e99..e8a71aa8645 100644
--- a/cpp/src/IceBox/ServiceManagerI.cpp
+++ b/cpp/src/IceBox/ServiceManagerI.cpp
@@ -128,7 +128,6 @@ IceBox::ServiceManagerI::ServiceManagerI(CommunicatorPtr communicator, int& argc
_traceServiceObserver(0)
{
_logger = _communicator->getLogger();
-
_traceServiceObserver = _communicator->getProperties()->getPropertyAsInt("IceBox.Trace.ServiceObserver");
for(int i = 1; i < argc; i++)
@@ -655,6 +654,11 @@ IceBox::ServiceManagerI::start(const string& service, const string& entryPoint,
}
//
+ // Clone the logger to assing a new prefix.
+ //
+ initData.logger = _logger->cloneWithPrefix(initData.properties->getProperty("Ice.ProgramName"));
+
+ //
// Remaining command line options are passed to the communicator. This is
// necessary for Ice plug-in properties (e.g.: IceSSL).
//
diff --git a/cs/demo/Ice/plugin/LoggerI.cs b/cs/demo/Ice/plugin/LoggerI.cs
index 9bd981845dc..a04a669562a 100644
--- a/cs/demo/Ice/plugin/LoggerI.cs
+++ b/cs/demo/Ice/plugin/LoggerI.cs
@@ -28,4 +28,9 @@ public class LoggerI : Ice.Logger
{
System.Console.WriteLine("ERROR: " + message);
}
+
+ public Ice.Logger cloneWithPrefix(string prefix)
+ {
+ return new LoggerI();
+ }
}
diff --git a/cs/src/Ice/LoggerI.cs b/cs/src/Ice/LoggerI.cs
index baa61e8d044..9ded0dd536d 100644
--- a/cs/src/Ice/LoggerI.cs
+++ b/cs/src/Ice/LoggerI.cs
@@ -89,6 +89,8 @@ namespace Ice
}
}
+ public abstract Logger cloneWithPrefix(string prefix);
+
protected abstract void write(string message);
internal string _prefix = "";
@@ -110,6 +112,11 @@ namespace Ice
{
}
+ public override Logger cloneWithPrefix(string prefix)
+ {
+ return new ConsoleLoggerI(prefix);
+ }
+
protected override void write(string message)
{
System.Console.Error.WriteLine(message);
@@ -123,21 +130,29 @@ namespace Ice
{
if(file.Length != 0)
{
+ _file = file;
Trace.Listeners.Add(new TextWriterTraceListener(file));
}
-
+ _console = console;
if(console && !Trace.Listeners.Contains(_consoleListener))
{
Trace.Listeners.Add(_consoleListener);
}
}
+ public override Logger cloneWithPrefix(string prefix)
+ {
+ return new TraceLoggerI(prefix, _file, _console);
+ }
+
protected override void write(string message)
{
Trace.WriteLine(message);
Trace.Flush();
}
+ private string _file = "";
+ private bool _console = false;
internal static ConsoleTraceListener _consoleListener = new ConsoleTraceListener(true);
}
}
diff --git a/cs/src/Ice/SysLoggerI.cs b/cs/src/Ice/SysLoggerI.cs
index 0ef1ebf88e8..0dcf2274039 100644
--- a/cs/src/Ice/SysLoggerI.cs
+++ b/cs/src/Ice/SysLoggerI.cs
@@ -54,6 +54,11 @@ namespace Ice
{
log(LOG_ERR, message);
}
+
+ public Logger cloneWithPrefix(string prefix)
+ {
+ return new SysLoggerI(prefix);
+ }
private void log(int severity, string message)
{
diff --git a/cs/src/IceBox/ServiceManagerI.cs b/cs/src/IceBox/ServiceManagerI.cs
index a2b03097b0e..192267c6aeb 100644
--- a/cs/src/IceBox/ServiceManagerI.cs
+++ b/cs/src/IceBox/ServiceManagerI.cs
@@ -655,6 +655,11 @@ class ServiceManagerI : ServiceManagerDisp_
//
info.args = initData.properties.parseCommandLineOptions(service, info.args);
}
+
+ //
+ // Clone the logger to assing a new prefix.
+ //
+ initData.logger = _logger.cloneWithPrefix(initData.properties.getProperty("Ice.ProgramName"));
//
// Remaining command line options are passed to the communicator. This is
diff --git a/cs/test/Ice/exceptions/Server.cs b/cs/test/Ice/exceptions/Server.cs
index 45039320cc4..ac6821c9d1a 100644
--- a/cs/test/Ice/exceptions/Server.cs
+++ b/cs/test/Ice/exceptions/Server.cs
@@ -34,6 +34,11 @@ public sealed class DummyLogger : Ice.Logger
public void error(string message)
{
}
+
+ public Ice.Logger cloneWithPrefix(string prefix)
+ {
+ return new DummyLogger();
+ }
}
public class Server
diff --git a/java/demo/Ice/plugin/LoggerI.java b/java/demo/Ice/plugin/LoggerI.java
index b6fa5b2f637..72c50415bf1 100644
--- a/java/demo/Ice/plugin/LoggerI.java
+++ b/java/demo/Ice/plugin/LoggerI.java
@@ -34,4 +34,10 @@ public class LoggerI implements Ice.Logger
{
System.out.println("ERROR: " + message);
}
+
+ public Ice.Logger
+ cloneWithPrefix(String prefix)
+ {
+ return new LoggerI();
+ }
}
diff --git a/java/src/Ice/LoggerI.java b/java/src/Ice/LoggerI.java
index 61aa550c907..2468618cbc7 100644
--- a/java/src/Ice/LoggerI.java
+++ b/java/src/Ice/LoggerI.java
@@ -25,13 +25,14 @@ public class LoggerI implements Logger
if(file.length() != 0)
{
+ _file = file;
try
{
- _out = new java.io.FileOutputStream(new java.io.File(file), true);
+ _out = new java.io.FileOutputStream(new java.io.File(_file), true);
}
catch(java.io.FileNotFoundException ex)
{
- throw new InitializationException("FileLogger: cannot open " + file);
+ throw new InitializationException("FileLogger: cannot open " + _file);
}
}
}
@@ -106,6 +107,12 @@ public class LoggerI implements Logger
write(s, true);
}
+ public Logger
+ cloneWithPrefix(String prefix)
+ {
+ return new LoggerI(prefix, _file);
+ }
+
private void
write(StringBuilder message, boolean indent)
{
@@ -137,6 +144,7 @@ public class LoggerI implements Logger
}
String _prefix = "";
+ String _file = "";
String _lineSeparator;
java.text.DateFormat _date;
java.text.SimpleDateFormat _time;
diff --git a/java/src/Ice/SysLoggerI.java b/java/src/Ice/SysLoggerI.java
index c1d03f6b35e..e782aa18f7f 100644
--- a/java/src/Ice/SysLoggerI.java
+++ b/java/src/Ice/SysLoggerI.java
@@ -63,6 +63,12 @@ public final class SysLoggerI implements Logger
log(LOG_ERR, message);
}
+ public Logger
+ cloneWithPrefix(String prefix)
+ {
+ return new SysLoggerI(prefix);
+ }
+
private void
log(int severity, String message)
{
diff --git a/java/src/IceBox/ServiceManagerI.java b/java/src/IceBox/ServiceManagerI.java
index e5571b291e7..0c5620031ee 100644
--- a/java/src/IceBox/ServiceManagerI.java
+++ b/java/src/IceBox/ServiceManagerI.java
@@ -558,6 +558,11 @@ public class ServiceManagerI extends _ServiceManagerDisp
}
//
+ // Clone the logger to assing a new prefix.
+ //
+ initData.logger = _logger.cloneWithPrefix(initData.properties.getProperty("Ice.ProgramName"));
+
+ //
// Remaining command line options are passed to the communicator. This is
// necessary for Ice plug-in properties (e.g.: IceSSL).
//
diff --git a/java/test/Ice/exceptions/DummyLogger.java b/java/test/Ice/exceptions/DummyLogger.java
index 6f2d32a5feb..6dfec61c9cf 100644
--- a/java/test/Ice/exceptions/DummyLogger.java
+++ b/java/test/Ice/exceptions/DummyLogger.java
@@ -31,4 +31,10 @@ public final class DummyLogger implements Ice.Logger
error(String message)
{
}
+
+ public Ice.Logger
+ cloneWithPrefix(String prefix)
+ {
+ return new DummyLogger();
+ }
}
diff --git a/slice/Ice/Logger.ice b/slice/Ice/Logger.ice
index b3af474636e..22332ee9ad5 100644
--- a/slice/Ice/Logger.ice
+++ b/slice/Ice/Logger.ice
@@ -63,6 +63,16 @@ local interface Logger
*
**/
void error(string message);
+
+ /**
+ *
+ * Returns a clone of the logger with prefix
+ * as the logger prefix.
+ *
+ * @param prefix The new prefix to the looger.
+ *
+ */
+ Logger cloneWithPrefix(string prefix);
};
};