@@ -55,15 +55,18 @@ namespace pmon::util::log
5555 }
5656 EntryBuilder& EntryBuilder::mark (const TimePoint& tp) noexcept
5757 {
58- const auto now = std::chrono::high_resolution_clock::now ();
59- const auto duration = std::chrono::duration<double , std::milli>(now - tp.value ).count ();
58+ try {
59+ const auto now = std::chrono::high_resolution_clock::now ();
60+ const auto duration = std::chrono::duration<double , std::milli>(now - tp.value ).count ();
6061
61- if (note_.empty ()) {
62- note_ += std::format (L" Marked: {:.3f}ms" , duration);
63- }
64- else {
65- note_ += std::format (L" \n Marked: {:.3f}ms" , duration);
62+ if (note_.empty ()) {
63+ note_ += std::format (L" Marked: {:.3f}ms" , duration);
64+ }
65+ else {
66+ note_ += std::format (L" \n Marked: {:.3f}ms" , duration);
67+ }
6668 }
69+ catch (...) { pmlog_panic_ (L" Failed to mark time in EntryBuilder" ); }
6770 return *this ;
6871 }
6972
@@ -153,32 +156,37 @@ namespace pmon::util::log
153156 }
154157 EntryBuilder::~EntryBuilder ()
155158 {
156- if (pDest_) {
157- auto tracing = captureTrace_.value_or ((int )level_ <= (int )GlobalPolicy::Get ().GetTraceLevel ());
158- // do line override check
159- if (LineTable::GetTraceOverride ()) {
160- if (auto pEntry = LineTable::TryLookup (GetSourceFileName (), sourceLine_)) {
161- switch (pEntry->traceOverride_ ) {
162- case LineTable::TraceOverride::ForceOn: tracing = true ; break ;
163- case LineTable::TraceOverride::ForceOff: tracing = false ; break ;
159+ try {
160+ if (pDest_) {
161+ auto tracing = captureTrace_.value_or ((int )level_ <= (int )GlobalPolicy::Get ().GetTraceLevel ());
162+ // do line override check
163+ if (LineTable::GetTraceOverride ()) {
164+ if (auto pEntry = LineTable::TryLookup (GetSourceFileName (), sourceLine_)) {
165+ switch (pEntry->traceOverride_ ) {
166+ case LineTable::TraceOverride::ForceOn: tracing = true ; break ;
167+ case LineTable::TraceOverride::ForceOff: tracing = false ; break ;
168+ }
164169 }
165170 }
166- }
167- if (tracing) {
168- try {
169- pTrace_ = StackTrace::Here (traceSkipDepth_);
170- if (GlobalPolicy::Get ().GetResolveTraceInClientThread ()) {
171- pTrace_->Resolve ();
171+ if (tracing) {
172+ try {
173+ pTrace_ = StackTrace::Here (traceSkipDepth_);
174+ if (GlobalPolicy::Get ().GetResolveTraceInClientThread ()) {
175+ pTrace_->Resolve ();
176+ }
177+ }
178+ catch (...) {
179+ pmlog_panic_ (L" Failed to get current stacktrace" );
172180 }
173181 }
174- catch (...) {
175- pmlog_panic_ (L" Failed to get current stacktrace" );
176- }
182+ pDest_->Submit (std::move (*this ));
183+ }
184+ else {
185+ pmlog_panic_ (L" Log entry completed with no destination channel set" );
177186 }
178- pDest_->Submit (std::move (*this ));
179187 }
180- else {
181- pmlog_panic_ (L" Log entry completed with no destination channel set " );
188+ catch (...) {
189+ pmlog_panic_ (L" Error when completing log entry " );
182190 }
183191 }
184192}
0 commit comments