diff options
-rw-r--r-- | cpp/demo/Ice/plugin/LoggerPluginI.cpp | 6 | ||||
-rw-r--r-- | cpp/src/Ice/LoggerI.cpp | 11 | ||||
-rw-r--r-- | cpp/src/Ice/LoggerI.h | 2 | ||||
-rw-r--r-- | cpp/src/Ice/SysLoggerI.cpp | 6 | ||||
-rw-r--r-- | cpp/src/Ice/SysLoggerI.h | 1 | ||||
-rw-r--r-- | cpp/src/IceBox/ServiceManagerI.cpp | 6 | ||||
-rw-r--r-- | cs/demo/Ice/plugin/LoggerI.cs | 5 | ||||
-rw-r--r-- | cs/src/Ice/LoggerI.cs | 17 | ||||
-rw-r--r-- | cs/src/Ice/SysLoggerI.cs | 5 | ||||
-rw-r--r-- | cs/src/IceBox/ServiceManagerI.cs | 5 | ||||
-rw-r--r-- | cs/test/Ice/exceptions/Server.cs | 5 | ||||
-rw-r--r-- | java/demo/Ice/plugin/LoggerI.java | 6 | ||||
-rw-r--r-- | java/src/Ice/LoggerI.java | 12 | ||||
-rw-r--r-- | java/src/Ice/SysLoggerI.java | 6 | ||||
-rw-r--r-- | java/src/IceBox/ServiceManagerI.java | 5 | ||||
-rw-r--r-- | java/test/Ice/exceptions/DummyLogger.java | 6 | ||||
-rw-r--r-- | slice/Ice/Logger.ice | 10 |
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); }; }; |