-
Notifications
You must be signed in to change notification settings - Fork 3
Examples TracePoints
Eduard Mishkurov edited this page May 16, 2026
·
3 revisions
This example demonstrates trace points: dormant logging instructions that count calls by default and start producing normal logme output only after they are enabled through runtime control.
The example first executes the code with trace points disabled, prints the collected counters, enables all trace points with trace enable *:*:*, executes the same workload again, and then disables them.
2026-05-16 11:03:18:842 main(): Trace Points example
2026-05-16 11:03:18:847 PrintControlResult(): control> trace list *:*:*
2026-05-16 11:03:18:847 PrintControlResult(): off C:\Users\TRITON 17X\AppData\Local\Temp\logme_examples_ia8yg37j\logme\examples\TracePoints\TracePoints.cpp:ProcessItem:19 hits=2
off C:\Users\TRITON 17X\AppData\Local\Temp\logme_examples_ia8yg37j\logme\examples\TracePoints\TracePoints.cpp:ProcessItem:15 hits=6
off C:\Users\TRITON 17X\AppData\Local\Temp\logme_examples_ia8yg37j\logme\examples\TracePoints\TracePoints.cpp:RunWorkload:31 hits=6
off C:\Users\TRITON 17X\AppData\Local\Temp\logme_examples_ia8yg37j\logme\examples\TracePoints\TracePoints.cpp:RunWorkload:27 hits=1
2026-05-16 11:03:18:847 PrintControlResult(): control> trace enable *:*:*
2026-05-16 11:03:18:847 PrintControlResult(): ok: 4 enabled
2026-05-16 11:03:18:847 TracePoints.cpp(27): RunWorkload(): RunWorkload entered
2026-05-16 11:03:18:847 TracePoints.cpp(31): RunWorkload(): loop iteration: i=0
2026-05-16 11:03:18:847 TracePoints.cpp(15): ProcessItem(): ProcessItem entered: value=0
2026-05-16 11:03:18:847 W TracePoints.cpp(19): ProcessItem(): rare branch: value=0
2026-05-16 11:03:18:847 TracePoints.cpp(31): RunWorkload(): loop iteration: i=1
2026-05-16 11:03:18:847 TracePoints.cpp(15): ProcessItem(): ProcessItem entered: value=1
2026-05-16 11:03:18:847 TracePoints.cpp(31): RunWorkload(): loop iteration: i=2
2026-05-16 11:03:18:847 TracePoints.cpp(15): ProcessItem(): ProcessItem entered: value=2
2026-05-16 11:03:18:847 TracePoints.cpp(31): RunWorkload(): loop iteration: i=3
2026-05-16 11:03:18:847 TracePoints.cpp(15): ProcessItem(): ProcessItem entered: value=3
2026-05-16 11:03:18:847 W TracePoints.cpp(19): ProcessItem(): rare branch: value=3
2026-05-16 11:03:18:847 TracePoints.cpp(31): RunWorkload(): loop iteration: i=4
2026-05-16 11:03:18:847 TracePoints.cpp(15): ProcessItem(): ProcessItem entered: value=4
2026-05-16 11:03:18:847 TracePoints.cpp(31): RunWorkload(): loop iteration: i=5
2026-05-16 11:03:18:847 TracePoints.cpp(15): ProcessItem(): ProcessItem entered: value=5
2026-05-16 11:03:18:847 PrintControlResult(): control> trace stat *:*:*
2026-05-16 11:03:18:847 PrintControlResult(): on C:\Users\TRITON 17X\AppData\Local\Temp\logme_examples_ia8yg37j\logme\examples\TracePoints\TracePoints.cpp:ProcessItem:19 hits=4
on C:\Users\TRITON 17X\AppData\Local\Temp\logme_examples_ia8yg37j\logme\examples\TracePoints\TracePoints.cpp:ProcessItem:15 hits=12
on C:\Users\TRITON 17X\AppData\Local\Temp\logme_examples_ia8yg37j\logme\examples\TracePoints\TracePoints.cpp:RunWorkload:31 hits=12
on C:\Users\TRITON 17X\AppData\Local\Temp\logme_examples_ia8yg37j\logme\examples\TracePoints\TracePoints.cpp:RunWorkload:27 hits=2
... output truncated, 7 lines omitted ...
Repository folder: examples/TracePoints
#include <Logme/ArgumentList.h>
#include <Logme/Logme.h>
using namespace Logme;
static ChannelPtr EnsureVisibleChannel(const ID& id)
{
auto ch = Logme::Instance->CreateChannel(id);
ch->AddLink(::CH);
return ch;
}
static int ProcessItem(int value)
{
LogmeTPt("ProcessItem entered: %s", ARGS1(value));
if ((value % 3) == 0)
{
LogmeW_TPt("rare branch: %s", ARGS1(value));
}
return value * 2;
}
static void RunWorkload(const ChannelPtr& ch)
{
LogmeTPt(ch, "RunWorkload entered");
for (int i = 0; i < 6; ++i)
{
LogmeTPt(ch, "loop iteration: %s", ARGS1(i));
ProcessItem(i);
}
}
static void PrintControlResult(const char* command)
{
LogmeI("control> %s", command);
LogmeI("%s", Logme::Instance->Control(command).c_str());
}
int main()
{
auto ch = EnsureVisibleChannel(ID{ "examples_trace" });
LogmeI(ch, "Trace Points example");
RunWorkload(ch);
PrintControlResult("trace list *:*:*");
PrintControlResult("trace enable *:*:*");
RunWorkload(ch);
PrintControlResult("trace stat *:*:*");
PrintControlResult("trace disable *:*:*");
RunWorkload(ch);
PrintControlResult("trace stat *:*:*");
return 0;
}Previous: ThreadContext | Next: TypicalUsage examples
logme — flexible runtime logging system
Home · Getting Started · Architecture · Output · Backends · Configuration
GitHub: https://github.com/efmsoft/logme
- Home
- Getting Started
- Why logme?
- Core Concepts
- Logging Macros
- Fatal Handling
- Crash Logging
- glog Compatibility
- C API
- Choosing Logging Macros
- Function tracing
- Trace Points
- Override Scopes
- Advanced Features
- Collapse Logging
- Feature Map
- Overview
- Console Backend
- Debugger Backend
- File Backend
- File Rotation & Retention
- Buffer Backend
- Ring Buffer Backend
- SharedFile Backend
- Callback Backend
- Windows Event Log Backend
- Custom Backends
- Runtime Control
- Configuration
- Configuration JSON
- Control Server
- Environment Control
- Control Policies
- Trace Points
- Message Filtering