From 17d36988159383f0a211a75a668e043851c69b1c Mon Sep 17 00:00:00 2001 From: Marian Krivos Date: Mon, 22 Aug 2011 17:10:16 +0000 Subject: [PATCH] trunk/branch integration: Message source --- Foundation/include/Poco/Message.h | 53 +++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/Foundation/include/Poco/Message.h b/Foundation/include/Poco/Message.h index 297c4a2c3..1b4ef8b0c 100644 --- a/Foundation/include/Poco/Message.h +++ b/Foundation/include/Poco/Message.h @@ -57,6 +57,9 @@ class Foundation_API Message /// its meaning, the time of its creation, and an identifier of /// the process and thread that created the message. /// + /// Optionally a Message can also contain the source file path + /// and line number of the statement generating the message. + /// /// A Message can also contain any number of named parameters /// that contain additional information about the event that /// caused the message. @@ -81,6 +84,18 @@ public: Message(const std::string& source, const std::string& text, Priority prio); /// Creates a Message with the given source, text and priority. /// The thread and process ids are set. + + Message(const std::string& source, const std::string& text, Priority prio, const char* file, int line); + /// Creates a Message with the given source, text, priority, + /// source file path and line. + /// + /// The source file path must be a + /// static string with a lifetime that's at least the lifetime + /// of the message object (the string is not copied internally). + /// Usually, this will be the path string obtained from the + /// __FILE__ macro. + /// + /// The thread and process ids are set. Message(const Message& msg); /// Creates a Message by copying another one. @@ -139,6 +154,30 @@ public: long getPid() const; /// Returns the process identifier for the message. + void setSourceFile(const char* file); + /// Sets the source file path of the statement + /// generating the log message. + /// + /// File must be a static string, such as the value of + /// the __FILE__ macro. The string is not copied + /// internally for performance reasons. + + const char* getSourceFile() const; + /// Returns the source file path of the code creating + /// the message. May be 0 if not set. + + void setSourceLine(int line); + /// Sets the source file line of the statement + /// generating the log message. + /// + /// This is usually the result of the __LINE__ + /// macro. + + int getSourceLine() const; + /// Returns the source file line of the statement + /// generating the log message. May be 0 + /// if not set. + const std::string& operator [] (const std::string& param) const; /// Returns a const reference to the value of the parameter /// with the given name. Throws a NotFoundException if the @@ -162,6 +201,8 @@ private: int _tid; std::string _thread; long _pid; + const char* _file; + int _line; StringMap* _pMap; }; @@ -211,6 +252,18 @@ inline long Message::getPid() const } +inline const char* Message::getSourceFile() const +{ + return _file; +} + + +inline int Message::getSourceLine() const +{ + return _line; +} + + inline void swap(Message& m1, Message& m2) { m1.swap(m2);