Skip to content

Commit 3d635f0

Browse files
committed
HPCC-33640 Add a developer option for logging all events
Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
1 parent 5ea7b6b commit 3d635f0

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

system/jlib/jevent.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ BITMASK_ENUM(EventFlags);
4444

4545
static constexpr unsigned defaultEventFlags = ERFthreadid;
4646

47+
inline void TRACEEVENT(char const * format, ...) __attribute__((format(printf, 1, 2)));
48+
inline void TRACEEVENT(char const * format, ...)
49+
{
50+
va_list args;
51+
va_start(args, format);
52+
VALOG(MCmonitorEvent, format, args);
53+
va_end(args);
54+
}
55+
4756
//---------------------------------------------------------------------------------------------------------------------
4857
//
4958
// Meta information about events and attributes.
@@ -241,9 +250,15 @@ void EventRecorder::startRecording(const char * optionsText, const char * filena
241250
options = (options & ~ERFthreadid) | (valueBool ? ERFthreadid : ERFnone);
242251
else if (strieq(option, "stack"))
243252
options = (options & ~ERFstacktrace) | (valueBool ? ERFstacktrace : ERFnone);
253+
else if (strieq(option, "all"))
254+
options = (valueBool ? ~ERFnone : ERFnone);
255+
else if (strieq(option, "log"))
256+
outputToLog = valueBool;
244257
};
245258

246259
options = defaultEventFlags;
260+
outputToLog = false;
261+
247262
processOptionString(optionsText, processOption);
248263
sizeMessageHeaderFooter = sizeof(EventType) + sizeof(__uint64) + sizeof(EventAttr); // event type, timestamp and end of attributes marker
249264
if (options & ERFthreadid)
@@ -374,6 +389,9 @@ void EventRecorder::recordIndexLookup(unsigned fileid, offset_t offset, byte nod
374389
if (!isActive())
375390
return;
376391

392+
if (unlikely(outputToLog))
393+
TRACEEVENT("{ \"name\": \"IndexLookup\", \"file\": %u, \"offset\"=0x%llx, \"kind\": %d, \"hit\": %s }", fileid, offset, nodeKind, boolToStr(hit));
394+
377395
size32_t requiredSize = sizeMessageHeaderFooter + getSizeOfAttrs(fileid, offset, nodeKind, hit);
378396
offset_type writeOffset = reserveEvent(requiredSize);
379397
offset_type pos = writeOffset;
@@ -390,6 +408,9 @@ void EventRecorder::recordIndexLoad(unsigned fileid, offset_t offset, byte nodeK
390408
if (!isActive())
391409
return;
392410

411+
if (unlikely(outputToLog))
412+
TRACEEVENT("{ \"name\": \"IndexLoad\", \"file\": %u, \"offset\"=0x%llx, \"kind\": %d, \"size\": %u, \"elapsed\": %llu, \"read\": %llu }", fileid, offset, nodeKind, size, elapsedTime, readTime);
413+
393414
size32_t requiredSize = sizeMessageHeaderFooter + getSizeOfAttrs(fileid, offset, nodeKind, size, elapsedTime, readTime);
394415
offset_type writeOffset = reserveEvent(requiredSize);
395416
offset_type pos = writeOffset;
@@ -408,6 +429,9 @@ void EventRecorder::recordIndexEviction(unsigned fileid, offset_t offset, byte n
408429
if (!isActive())
409430
return;
410431

432+
if (unlikely(outputToLog))
433+
TRACEEVENT("{ \"name\": \"IndexEviction\", \"file\": %u, \"offset\"=0x%llx, \"kind\": %d, \"size\": %u }", fileid, offset, nodeKind, size);
434+
411435
size32_t requiredSize = sizeMessageHeaderFooter + getSizeOfAttrs(fileid, offset, nodeKind, size);
412436
offset_type writeOffset = reserveEvent(requiredSize);
413437
offset_type pos = writeOffset;

system/jlib/jevent.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ class jlib_decl EventRecorder
151151
CriticalSection cs;
152152
unsigned sizeMessageHeaderFooter{0};
153153
unsigned options{0};
154+
bool outputToLog{false};
154155
Owned<IFileIO> output;
155156
};
156157

0 commit comments

Comments
 (0)