--- name: log_info kind: function lang: go domain: infra version: "1.0.0" purity: impure signature: "func LogInfo(logger *Logger, msg string, fields ...any)" description: "Emite un log a nivel info en el Logger. Los fields son pares key-value variadicos. Si el nivel del logger es mayor que Info, el mensaje se descarta silenciosamente." tags: [logging, log, info, slog, infra] uses_functions: [] uses_types: [Logger_go_infra] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: - name: logger desc: "Logger al que emitir el mensaje. Si es nil la funcion no hace nada" - name: msg desc: "mensaje principal del log" - name: fields desc: "pares key-value variadicos (ej: \"port\", 8484, \"user\", \"lucas\")" output: "nada (side effect: escribe al Output del Logger)" tested: true tests: ["LogInfo emite nivel INFO", "emite JSON valido al escribir", "campos inline en la llamada aparecen en el JSON"] test_file_path: "functions/infra/logger_test.go" file_path: "functions/infra/log_info.go" --- ## Ejemplo ```go logger, _ := LoggerNew(LogLevelInfo, os.Stdout, "json") LogInfo(logger, "server starting", "port", 8484, "app", "sqlite_api") // {"time":"...","level":"INFO","msg":"server starting","port":8484,"app":"sqlite_api"} ``` ## Notas Funcion impura — delega a `slog.Logger.Info()`. Nivel por defecto recomendado para eventos normales del ciclo de vida de la app (arranque, conexiones establecidas, requests completadas). Para errores usar `LogError`, para situaciones anomalas no fatales usar `LogWarn`.