IntelliLog 🥷
Smarter console logs — in one keystroke.
IntelliLog detects your variable's type and language, automatically picking the right debugging method for you. Supports JavaScript/TypeScript, Python, Go, and PHP out of the box! No more manually typing console.table, pprint, or fmt.Printf.
How It Works
- Highlight a variable name in your editor.
- Press the shortcut
Cmd+Option+L (Mac) or Ctrl+Alt+L (Windows).
- IntelliLog inserts the best console statement right below it — automatically.
✨ Features
- Smart Heuristics – Automatically detects what kind of variable you highlighted (arrays, errors, promises, structs) and inserts the best possible logging method.
- Color-Coded Icons – Logs are instantly recognizable with dynamic emoji prefixes (🟥 for errors, 📊 for arrays/tables, ⏱️ for performance).
- Multi-Language Support – Works seamlessly across JavaScript, TypeScript, Python, Go, and PHP without needing separate extensions.
- Zero Configuration – No complex setup required. Just highlight and press the shortcut.
⌨️ Keyboard Shortcuts
Cmd+Option+L (Mac)
Ctrl+Alt+L (Windows/Linux)
intellilog.smartLog (Command Palette)
Supported Languages & Methods
💛 JavaScript / TypeScript
console.log — General values
Your code:
const message = "Hello World";
After pressing the shortcut (IntelliLog inserts):
const message = "Hello World";
console.log("🎯 message:", message);
Console output:
🎯 message: Hello World
console.table — Arrays & objects
Your code:
const users = await fetchUsers();
After pressing the shortcut (IntelliLog inserts):
const users = await fetchUsers();
console.table("🎯 users:", users);
Console output:
┌─────────┬───────────┬─────────────────────┐
│ (index) │ name │ email │
├─────────┼───────────┼─────────────────────┤
│ 0 │ 'Alice' │ 'alice@example.com' │
│ 1 │ 'Bob' │ 'bob@example.com' │
└─────────┴───────────┴─────────────────────┘
console.error — Errors & catch blocks
Your code:
try {
riskyOperation();
} catch (myError) {
// cursor here
}
After pressing the shortcut (IntelliLog inserts):
try {
riskyOperation();
} catch (myError) {
console.error("🎯 myError:", myError);
}
Console output:
🎯 myError: TypeError: Cannot read properties of undefined (reading 'id')
at riskyOperation (app.js:12)
at catch (app.js:15)
console.warn — Promises & async calls
Your code:
const fetchData = fetch("/api/data");
After pressing the shortcut (IntelliLog inserts):
const fetchData = fetch("/api/data");
console.warn("🎯 fetchData:", fetchData);
Console output:
⚠ 🎯 fetchData: Promise { <pending> }
console.trace — Call stack tracing
Your code:
function handleClick() {
const stackTrace = new Error().stack;
}
After pressing the shortcut (IntelliLog inserts):
function handleClick() {
const stackTrace = new Error().stack;
console.trace("🎯 stackTrace:", stackTrace);
}
Console output:
🎯 stackTrace:
handleClick @ app.js:5
onClick @ button.js:12
dispatchEvent @ react-dom.js:3728
console.dir — Object inspection
Your code:
const myObj = document.querySelector("#app");
After pressing the shortcut (IntelliLog inserts):
const myObj = document.querySelector("#app");
console.dir("🎯 myObj:", myObj);
Console output:
🎯 myObj: HTMLDivElement
├─ id: "app"
├─ className: "container"
├─ childElementCount: 3
└─ ...
Your code:
const perfTime = runHeavyTask();
After pressing the shortcut (IntelliLog inserts):
console.time("🎯 perfTime");
const perfTime = runHeavyTask();
console.timeEnd("🎯 perfTime");
Console output:
🎯 perfTime: 142.35 ms
Your code:
const renderTimeLog = performance.now();
After pressing the shortcut (IntelliLog inserts):
const renderTimeLog = performance.now();
console.timeLog("🎯 renderTimeLog", renderTimeLog);
Console output:
🎯 renderTimeLog: 523.10 ms → 1847.23
console.group — Grouped log output
Your code:
const userGroup = getUsers();
After pressing the shortcut (IntelliLog inserts):
const userGroup = getUsers();
console.group("🎯 userGroup");
console.log(userGroup[0]);
console.log(userGroup[1]);
console.groupEnd();
Console output:
▼ 🎯 userGroup
{ name: 'Alice', role: 'admin' }
{ name: 'Bob', role: 'user' }
console.groupEnd — Close a log group
Your code:
const userGroupEnd = true;
After pressing the shortcut (IntelliLog inserts):
const userGroupEnd = true;
console.groupEnd();
Console output:
▲ (group collapsed)
console.count — Count occurrences
Your code:
const retryCount = 0;
After pressing the shortcut (IntelliLog inserts):
const retryCount = 0;
console.count("🎯 retryCount");
Console output (called 3 times):
🎯 retryCount: 1
🎯 retryCount: 2
🎯 retryCount: 3
🐍 Python
IntelliLog detects Python dictionaries, lists, and errors to use the right debugging module.
Your code:
# Highlight "users" → press shortcut
users = {"name": "Alice", "role": "admin"}
After pressing the shortcut (IntelliLog inserts):
users = {"name": "Alice", "role": "admin"}
import pprint; pprint.pprint(users)
Console output:
{'name': 'Alice', 'role': 'admin'}
🐹 Go (Golang)
IntelliLog handles Go structs beautifully by automatically using the %+v formatting verb.
Your code:
// Highlight "userData" → press shortcut
userData := User{Name: "Alice", Role: "Admin"}
After pressing the shortcut (IntelliLog inserts):
userData := User{Name: "Alice", Role: "Admin"}
fmt.Printf("🎯 userData: %+v\n", userData)
Console output:
🎯 userData: {Name:Alice Role:Admin}
🐘 PHP
IntelliLog knows when to use echo, print_r, var_dump, or even error_log in PHP.
Your code:
// Highlight "$dbError" → press shortcut
$dbError = ["code" => 500, "msg" => "Connection failed"];
After pressing the shortcut (IntelliLog inserts):
$dbError = ["code" => 500, "msg" => "Connection failed"];
error_log("🎯 dbError: " . print_r($dbError, true));
Console output (in php error log):
🎯 dbError: Array
(
[code] => 500
[msg] => Connection failed
)
Settings
Customize IntelliLog's output via VS Code settings (Cmd+, → search intellilog):
| Setting |
Default |
Description |
intellilog.logPrefix |
🎯 |
Prefix inserted before the variable name |
intellilog.insertArrow |
true |
Whether to insert => after the variable name |
Requirements
Author
Made with ❤️ by Shubham Tiwari