Entropic 2.11.1
Local-first agentic inference engine
Loading...
Searching...
No Matches
logging.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
23#pragma once
24
26#include <spdlog/spdlog.h>
27#include <spdlog/sinks/stdout_color_sinks.h>
28#include <chrono>
29#include <filesystem>
30#include <memory>
31#include <string>
32
33namespace entropic::log {
34
44ENTROPIC_EXPORT void init(spdlog::level::level_enum level = spdlog::level::info);
45
57ENTROPIC_EXPORT void add_file_sink(const std::filesystem::path& path);
58
77ENTROPIC_EXPORT std::shared_ptr<spdlog::logger> get(const std::string& name);
78
89ENTROPIC_EXPORT void setup_session(const std::filesystem::path& log_dir);
90
107ENTROPIC_EXPORT void set_console_enabled(bool enabled);
108
126ENTROPIC_EXPORT void register_handle_log(
127 int handle_id,
128 const std::filesystem::path& log_dir);
129
140ENTROPIC_EXPORT void unregister_handle_log(int handle_id);
141
159class ENTROPIC_EXPORT HandleLogScope {
160public:
167 explicit HandleLogScope(int handle_id);
174 HandleLogScope(const HandleLogScope&) = delete;
175 HandleLogScope& operator=(const HandleLogScope&) = delete;
176private:
177 int prev_id_;
178};
179
190ENTROPIC_EXPORT int current_handle_id();
191
192// ── Timing utilities ──────────────────────────────────────────
193
200inline auto now() { return std::chrono::steady_clock::now(); }
201
210inline double elapsed_ms(
211 std::chrono::steady_clock::time_point start,
212 std::chrono::steady_clock::time_point end)
213{
214 auto us = std::chrono::duration_cast<std::chrono::microseconds>(
215 end - start);
216 return static_cast<double>(us.count()) / 1000.0;
217}
218
219// ── Content escaping ──────────────────────────────────────────
220
233ENTROPIC_EXPORT std::string escape_content(const std::string& text);
234
235// ── Formatting helpers ────────────────────────────────────────
236
246ENTROPIC_EXPORT void log_content(
247 const std::shared_ptr<spdlog::logger>& logger,
248 spdlog::level::level_enum level,
249 const std::string& label,
250 const std::string& text);
251
260ENTROPIC_EXPORT void log_timing(
261 const std::shared_ptr<spdlog::logger>& logger,
262 const std::string& label,
263 double ms);
264
273ENTROPIC_EXPORT void log_tokens(
274 const std::shared_ptr<spdlog::logger>& logger,
275 int count,
276 double time_ms);
277
287ENTROPIC_EXPORT void log_decision(
288 const std::shared_ptr<spdlog::logger>& logger,
289 const std::string& label,
290 const std::string& key,
291 const std::string& value);
292
293} // namespace entropic::log
gh#59 (v2.3.1): RAII guard — sets thread's current handle_id.
Definition logging.h:159
Symbol visibility macro for all exported symbols.
ENTROPIC_EXPORT void add_file_sink(const std::filesystem::path &path)
Add a file sink to all loggers (truncated per run).
Definition logging.cpp:179
auto now()
Get current time for timing measurements.
Definition logging.h:200
ENTROPIC_EXPORT int current_handle_id()
gh#59 (v2.3.1): query the current thread's handle_id.
Definition logging.cpp:511
ENTROPIC_EXPORT std::shared_ptr< spdlog::logger > get(const std::string &name)
Get or create a named logger.
Definition logging.cpp:211
ENTROPIC_EXPORT void init(spdlog::level::level_enum level=spdlog::level::info)
Initialize the logging subsystem.
Definition logging.cpp:145
double elapsed_ms(std::chrono::steady_clock::time_point start, std::chrono::steady_clock::time_point end)
Compute elapsed milliseconds between two time points.
Definition logging.h:210
ENTROPIC_EXPORT void set_console_enabled(bool enabled)
Enable or disable the stderr console sink process-wide.
Definition logging.cpp:243
ENTROPIC_EXPORT void register_handle_log(int handle_id, const std::filesystem::path &log_dir)
gh#59 (v2.3.1): register a per-handle session.log file.
Definition logging.cpp:470
ENTROPIC_EXPORT void setup_session(const std::filesystem::path &log_dir)
Set up session logging for a project directory.
Definition logging.cpp:275
ENTROPIC_EXPORT void unregister_handle_log(int handle_id)
gh#59 (v2.3.1): release a handle's session.log file sink.
Definition logging.cpp:500
@ count
Sentinel — MUST remain last.