Entropic 2.3.8
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
76ENTROPIC_EXPORT std::shared_ptr<spdlog::logger> get(const std::string& name);
77
88ENTROPIC_EXPORT void setup_session(const std::filesystem::path& log_dir);
89
106ENTROPIC_EXPORT void set_console_enabled(bool enabled);
107
124ENTROPIC_EXPORT void register_handle_log(
125 int handle_id,
126 const std::filesystem::path& log_dir);
127
137ENTROPIC_EXPORT void unregister_handle_log(int handle_id);
138
154class ENTROPIC_EXPORT HandleLogScope {
155public:
162 explicit HandleLogScope(int handle_id);
169 HandleLogScope(const HandleLogScope&) = delete;
170 HandleLogScope& operator=(const HandleLogScope&) = delete;
171private:
172 int prev_id_;
173};
174
183ENTROPIC_EXPORT int current_handle_id();
184
185// ── Timing utilities ──────────────────────────────────────────
186
193inline auto now() { return std::chrono::steady_clock::now(); }
194
203inline double elapsed_ms(
204 std::chrono::steady_clock::time_point start,
205 std::chrono::steady_clock::time_point end)
206{
207 auto us = std::chrono::duration_cast<std::chrono::microseconds>(
208 end - start);
209 return static_cast<double>(us.count()) / 1000.0;
210}
211
212// ── Content escaping ──────────────────────────────────────────
213
226ENTROPIC_EXPORT std::string escape_content(const std::string& text);
227
228// ── Formatting helpers ────────────────────────────────────────
229
239ENTROPIC_EXPORT void log_content(
240 const std::shared_ptr<spdlog::logger>& logger,
241 spdlog::level::level_enum level,
242 const std::string& label,
243 const std::string& text);
244
253ENTROPIC_EXPORT void log_timing(
254 const std::shared_ptr<spdlog::logger>& logger,
255 const std::string& label,
256 double ms);
257
266ENTROPIC_EXPORT void log_tokens(
267 const std::shared_ptr<spdlog::logger>& logger,
268 int count,
269 double time_ms);
270
280ENTROPIC_EXPORT void log_decision(
281 const std::shared_ptr<spdlog::logger>& logger,
282 const std::string& label,
283 const std::string& key,
284 const std::string& value);
285
286} // namespace entropic::log
gh#59 (v2.3.1): RAII guard — sets thread's current handle_id.
Definition logging.h:154
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:193
ENTROPIC_EXPORT int current_handle_id()
gh#59 (v2.3.1): query the current thread's handle_id.
Definition logging.cpp:540
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:203
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:500
ENTROPIC_EXPORT void setup_session(const std::filesystem::path &log_dir)
Set up session logging for a project directory.
Definition logging.cpp:305
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:530