feat(cpp/core): logger + log_window + selectable_text widgets
Logger global thread-safe con ring buffer in-memory de 2000 entradas + escritura opcional a archivo. log_window flotante consume el ring buffer con filtros por nivel, busqueda y autoscroll; se abre desde Settings -> Logs en la menubar. selectable_text cubre el patron drag-to-select + Ctrl+C en cualquier ventana. app_menubar y framework run_app integran log_window_render() en el frame loop. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
---
|
||||
name: log_entry
|
||||
lang: cpp
|
||||
domain: core
|
||||
version: "1.0.0"
|
||||
algebraic: product
|
||||
definition: |
|
||||
namespace fn_log {
|
||||
constexpr std::size_t kEntryTextMax = 480;
|
||||
|
||||
struct Entry {
|
||||
Level level;
|
||||
long long ts_ms; // unix epoch en milisegundos
|
||||
char text[kEntryTextMax];
|
||||
};
|
||||
}
|
||||
description: "Entrada del ring buffer in-memory del logger. Contiene nivel, timestamp en milisegundos y la linea ya formateada [ts] [LEVEL] mensaje."
|
||||
tags: [logger, buffer, entry, ringbuffer]
|
||||
uses_types: [log_level_cpp_core]
|
||||
file_path: "cpp/functions/core/logger.h"
|
||||
examples:
|
||||
- "const fn_log::Entry* e = fn_log::buffer_at(0);"
|
||||
notes: "POD trivialmente copiable. La ventana Logs (log_window) itera el buffer via buffer_at(i)."
|
||||
---
|
||||
|
||||
# log_entry
|
||||
|
||||
Entrada individual del ring buffer in-memory del logger global. La capacidad del buffer es `fn_log::kBufferCapacity` (2000 entradas por defecto) — al llenarse, sobrescribe las mas antiguas.
|
||||
|
||||
`text` contiene la linea ya formateada (con prefijo `[YYYY-MM-DD HH:MM:SS.mmm] [LEVEL]`), lista para ser pintada por el visualizador. `level` y `ts_ms` se mantienen aparte para filtrado y coloreado por nivel.
|
||||
|
||||
Acceso de solo lectura via `fn_log::buffer_at(i)` con `i ∈ [0, fn_log::buffer_size())`. El indice 0 corresponde a la entrada mas antigua viva.
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
name: log_level
|
||||
lang: cpp
|
||||
domain: core
|
||||
version: "1.0.0"
|
||||
algebraic: sum
|
||||
definition: |
|
||||
namespace fn_log {
|
||||
enum class Level : int {
|
||||
Debug = 0,
|
||||
Info = 1,
|
||||
Warn = 2,
|
||||
Error = 3,
|
||||
};
|
||||
}
|
||||
description: "Nivel de severidad de un mensaje de log. Ordenado por severidad ascendente: Debug < Info < Warn < Error."
|
||||
tags: [logger, level, severity, enum]
|
||||
uses_types: []
|
||||
file_path: "cpp/functions/core/logger.h"
|
||||
examples:
|
||||
- "fn_log::Level::Info"
|
||||
- "fn_log::Level::Error"
|
||||
notes: "Usado por logger_init y logger_set_level. Mensajes con nivel < min_level se descartan."
|
||||
---
|
||||
|
||||
# log_level
|
||||
|
||||
Nivel de severidad de los mensajes emitidos por el logger global de C++ del registry. Se mapea 1:1 con los niveles tipicos de cualquier sistema de logging.
|
||||
|
||||
| Valor | Cuando usar |
|
||||
|---|---|
|
||||
| `Debug` | Trazas detalladas de desarrollo. Suelen filtrarse en produccion. |
|
||||
| `Info` | Eventos normales del flujo (start, exit, milestones). |
|
||||
| `Warn` | Situaciones anomalas que no impiden el funcionamiento. |
|
||||
| `Error` | Fallos que afectan a la operacion. |
|
||||
|
||||
El parametro `min_level` de `logger_init` filtra: cualquier mensaje con nivel inferior se descarta antes de tocar el archivo o el ring buffer. La ventana `Logs` permite ademas ocultar niveles ya capturados.
|
||||
Reference in New Issue
Block a user