X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FIOStreamTarget.cc;h=6441cf8581551b54c1d83e2a3c8f42fd61077f28;hb=5746957b0da2bb228b9284e9493158c113b2bbe0;hp=d1b30e8da2adbd35da240dd3b7112b9045c65ed6;hpb=204c9c8a9df166f1c220bbd86e1c7a839382c73d;p=senf.git diff --git a/Utils/Logger/IOStreamTarget.cc b/Utils/Logger/IOStreamTarget.cc index d1b30e8..6441cf8 100644 --- a/Utils/Logger/IOStreamTarget.cc +++ b/Utils/Logger/IOStreamTarget.cc @@ -33,6 +33,7 @@ #include #include #include +#include "../Scheduler/ClockService.hh" //#include "IOStreamTarget.mpp" #define prefix_ @@ -43,7 +44,7 @@ prefix_ senf::log::IOStreamTarget::IOStreamTarget(std::ostream & os) : stream_ (os), tag_ (detail::getDefaultTag()), noformat_ (false), showTime_ (true), - showStream_ (false), showLevel_ (true), showArea_ (true) + showStream_ (false), showLevel_ (true), showArea_ (true), timeBase_ (-1) { std::locale const & loc (datestream_.getloc()); datestream_.imbue( std::locale( @@ -53,9 +54,10 @@ prefix_ senf::log::IOStreamTarget::IOStreamTarget(std::ostream & os) prefix_ void senf::log::IOStreamTarget::timeFormat(std::string const & format) { - if (format.empty()) + if (format.empty()) { noformat_ = true; - else { + timeBase_ = -1; + } else { noformat_ = false; std::locale const & loc (datestream_.getloc()); datestream_.imbue( std::locale( @@ -86,8 +88,14 @@ prefix_ void senf::log::IOStreamTarget::v_write(time_type timestamp, Tokenizer::iterator const i_end (tokenizer.end()); if (showTime_) { - if (noformat_) - datestream_ << std::setfill('0') << std::setw(19) << timestamp; + if (noformat_) { + if (timeBase_ == -1) timeBase_ = timestamp; + time_type delta (timestamp - timeBase_); + datestream_ << std::setfill('0') << std::setw(10) + << (delta / 1000000000ll) << '.' + << std::setfill('0') << std::setw(9) + << (delta % 1000000000ll); + } else datestream_ << senf::ClockService::abstime(timestamp); datestream_ << ' ';