Logger::LogStream Logger::createStream(const string &_domain, int level, const std::string &_prefix) { string domain = simplifyDomain(_domain); if (enabled(domain, level)) { // Log date periodically uint64_t now = Time::now(); if (logDatePeriodically && lastDate + logDatePeriodically <= now) { write(String::bar(Time(now, "Date: %Y-%m-%d").toString()) + (logCRLF ? "\r\n" : "\n")); lastDate = now; } string prefix = startColor(level) + getHeader(domain, level) + _prefix; string suffix = endColor(level); string trailer; #ifdef HAVE_DEBUGGER if (domainTraces.find(domain) != domainTraces.end()) { StackTrace trace; Debugger::instance().getStackTrace(trace); for (int i = 0; i < 3; i++) trace.pop_front(); trailer = SSTR(trace); } #endif return new cb::LogStream(prefix, suffix, trailer); } else return new NullStream<>; }