| 178 | return EntryStream{ *this }; |
| 179 | } |
| 180 | void EntryBuilder::commit_() noexcept |
| 181 | { |
| 182 | try { |
| 183 | if (pDest_) { |
| 184 | auto tracing = captureTrace_.value_or((int)level_ <= (int)GlobalPolicy::Get().GetTraceLevel()); |
| 185 | // do line override check |
| 186 | if (LineTable::GetTraceOverride()) { |
| 187 | if (auto pEntry = LineTable::TryLookup(GetSourceFileName(), sourceLine_)) { |
| 188 | switch (pEntry->traceOverride_) { |
| 189 | case LineTable::TraceOverride::ForceOn: tracing = true; break; |
| 190 | case LineTable::TraceOverride::ForceOff: tracing = false; break; |
| 191 | } |
| 192 | } |
| 193 | } |
| 194 | if (tracing) { |
| 195 | try { |
| 196 | pTrace_ = StackTrace::Here(traceSkipDepth_); |
| 197 | if (GlobalPolicy::Get().GetResolveTraceInClientThread()) { |
| 198 | pTrace_->Resolve(); |
| 199 | } |
| 200 | } |
| 201 | catch (...) { |
| 202 | pmlog_panic_("Failed to get current stacktrace"); |
| 203 | } |
| 204 | } |
| 205 | pDest_->Submit(std::move(*this)); |
| 206 | } |
| 207 | else { |
| 208 | pmlog_panic_("Log entry completed with no destination channel set"); |
| 209 | } |
| 210 | } |
| 211 | catch (...) { |
| 212 | pmlog_panic_("Error when completing log entry"); |
| 213 | } |
| 214 | committed_ = true; |
| 215 | } |
| 216 | EntryBuilder::~EntryBuilder() |
| 217 | { |
| 218 | if (!committed_) { |
nothing calls this directly
no test coverage detected