You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2011/05/02 15:20:36 UTC
svn commit: r1098554 - in /qpid/trunk/qpid/cpp: include/qpid/log/Logger.h
include/qpid/log/Options.h include/qpid/sys/Time.h src/qpid/log/Logger.cpp
src/qpid/log/Options.cpp src/qpid/sys/posix/Time.cpp
src/qpid/sys/windows/Time.cpp
Author: kpvdr
Date: Mon May 2 13:20:36 2011
New Revision: 1098554
URL: http://svn.apache.org/viewvc?rev=1098554&view=rev
Log:
QPID-3236 - Add high-resolution timestamps to log files for debug situations. Windows impl has a stub only.
Modified:
qpid/trunk/qpid/cpp/include/qpid/log/Logger.h
qpid/trunk/qpid/cpp/include/qpid/log/Options.h
qpid/trunk/qpid/cpp/include/qpid/sys/Time.h
qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp
qpid/trunk/qpid/cpp/src/qpid/log/Options.cpp
qpid/trunk/qpid/cpp/src/qpid/sys/posix/Time.cpp
qpid/trunk/qpid/cpp/src/qpid/sys/windows/Time.cpp
Modified: qpid/trunk/qpid/cpp/include/qpid/log/Logger.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/log/Logger.h?rev=1098554&r1=1098553&r2=1098554&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/log/Logger.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/log/Logger.h Mon May 2 13:20:36 2011
@@ -36,7 +36,7 @@ namespace log {
class Logger : private boost::noncopyable {
public:
/** Flags indicating what to include in the log output */
- enum FormatFlag { FILE=1, LINE=2, FUNCTION=4, LEVEL=8, TIME=16, THREAD=32};
+ enum FormatFlag { FILE=1, LINE=2, FUNCTION=4, LEVEL=8, TIME=16, THREAD=32, HIRES=64};
/**
* Logging output sink.
Modified: qpid/trunk/qpid/cpp/include/qpid/log/Options.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/log/Options.h?rev=1098554&r1=1098553&r2=1098554&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/log/Options.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/log/Options.h Mon May 2 13:20:36 2011
@@ -39,7 +39,7 @@ struct Options : public qpid::Options {
std::string argv0;
std::string name;
std::vector<std::string> selectors;
- bool time, level, thread, source, function;
+ bool time, level, thread, source, function, hiresTs;
bool trace;
std::string prefix;
std::auto_ptr<SinkOptions> sinkOptions;
Modified: qpid/trunk/qpid/cpp/include/qpid/sys/Time.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/sys/Time.h?rev=1098554&r1=1098553&r2=1098554&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/sys/Time.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/sys/Time.h Mon May 2 13:20:36 2011
@@ -167,6 +167,9 @@ QPID_COMMON_EXTERN void usleep(uint64_t
/** Output formatted date/time for now*/
void outputFormattedNow(std::ostream&);
+/** Output unformatted nanosecond-resolution time for now */
+void outputHiresNow(std::ostream&);
+
}}
#endif /*!_sys_Time_h*/
Modified: qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp?rev=1098554&r1=1098553&r2=1098554&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp Mon May 2 13:20:36 2011
@@ -79,8 +79,12 @@ void Logger::log(const Statement& s, con
std::ostringstream os;
if (!prefix.empty())
os << prefix << ": ";
- if (flags&TIME)
- qpid::sys::outputFormattedNow(os);
+ if (flags&TIME) {
+ if (flags&HIRES)
+ qpid::sys::outputHiresNow(os);
+ else
+ qpid::sys::outputFormattedNow(os);
+ }
if (flags&LEVEL)
os << LevelTraits::name(s.level) << " ";
if (flags&THREAD)
@@ -129,7 +133,8 @@ int Logger::format(const Options& opts)
bitIf(opts.time, TIME) |
bitIf(opts.source, (FILE|LINE)) |
bitIf(opts.function, FUNCTION) |
- bitIf(opts.thread, THREAD);
+ bitIf(opts.thread, THREAD) |
+ bitIf(opts.hiresTs, HIRES);
format(flags);
return flags;
}
Modified: qpid/trunk/qpid/cpp/src/qpid/log/Options.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/log/Options.cpp?rev=1098554&r1=1098553&r2=1098554&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/log/Options.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/log/Options.cpp Mon May 2 13:20:36 2011
@@ -38,6 +38,7 @@ Options::Options(const std::string& argv
thread(false),
source(false),
function(false),
+ hiresTs(false),
trace(false),
sinkOptions (SinkOptions::create(argv0_))
{
@@ -65,6 +66,7 @@ Options::Options(const std::string& argv
("log-source", optValue(source,"yes|no"), "Include source file:line in log messages")
("log-thread", optValue(thread,"yes|no"), "Include thread ID in log messages")
("log-function", optValue(function,"yes|no"), "Include function signature in log messages")
+ ("log-hires-timestamp", optValue(hiresTs,"yes|no"), "Use unformatted hi-res timestamp in log messages")
("log-prefix", optValue(prefix,"STRING"), "Prefix to append to all log messages")
;
add(*sinkOptions);
@@ -80,6 +82,7 @@ Options::Options(const Options &o) :
thread(o.thread),
source(o.source),
function(o.function),
+ hiresTs(o.hiresTs),
trace(o.trace),
prefix(o.prefix),
sinkOptions (SinkOptions::create(o.argv0))
@@ -97,6 +100,7 @@ Options& Options::operator=(const Option
thread = x.thread;
source = x.source;
function = x.function;
+ hiresTs = x.hiresTs;
trace = x.trace;
prefix = x.prefix;
*sinkOptions = *x.sinkOptions;
Modified: qpid/trunk/qpid/cpp/src/qpid/sys/posix/Time.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/posix/Time.cpp?rev=1098554&r1=1098553&r2=1098554&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/posix/Time.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/posix/Time.cpp Mon May 2 13:20:36 2011
@@ -27,6 +27,7 @@
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
+#include <iomanip>
namespace {
int64_t max_abstime() { return std::numeric_limits<int64_t>::max(); }
@@ -103,6 +104,12 @@ void outputFormattedNow(std::ostream& o)
o << " ";
}
+void outputHiresNow(std::ostream& o) {
+ ::timespec time;
+ ::clock_gettime(CLOCK_REALTIME, &time);
+ o << time.tv_sec << "." << std::setw(9) << std::setfill('0') << time.tv_nsec << "s ";
+}
+
void sleep(int secs) {
::sleep(secs);
}
Modified: qpid/trunk/qpid/cpp/src/qpid/sys/windows/Time.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/windows/Time.cpp?rev=1098554&r1=1098553&r2=1098554&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/windows/Time.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/windows/Time.cpp Mon May 2 13:20:36 2011
@@ -97,4 +97,13 @@ void outputFormattedNow(std::ostream& o)
&timeinfo);
o << time_string << " ";
}
+
+void outputHiresNow(std::ostream& o) {
+// TODO: This is a stub - replace with windows code that will do the equivalent
+// of the Linux code commented out below. (kpvdr)
+// ::timespec time;
+// ::clock_gettime(CLOCK_REALTIME, &time);
+// o << time.tv_sec << "." << std::setw(9) << std::setfill('0') << time.tv_nsec << "s ";
+ o << "XXXXXXXXX.XXXXXXXXXs ";
+}
}}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org