0
0
Expressframework~10 mins

Structured logging with JSON in Express - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Structured logging with JSON
Start Request
Create Log Object
Add Context Info
Convert to JSON String
Output Log to Console/File
Continue Request Handling
The flow shows how a log entry is created as a JSON object with context, converted to a string, and output for easy reading and analysis.
Execution Sample
Express
app.use((req, res, next) => {
  const logEntry = {
    method: req.method,
    url: req.url,
    timestamp: new Date().toISOString()
  };
  console.log(JSON.stringify(logEntry));
  next();
});
This middleware logs each HTTP request as a JSON string with method, URL, and timestamp.
Execution Table
StepActionlogEntry ObjectJSON.stringify OutputNext Called
1Request received: GET /home{}N/ANo
2Create logEntry with method, url, timestamp{"method":"GET","url":"/home","timestamp":"2024-06-01T12:00:00.000Z"}N/ANo
3Convert logEntry to JSON stringSame as step 2{"method":"GET","url":"/home","timestamp":"2024-06-01T12:00:00.000Z"}No
4Output JSON string to consoleSame as step 2{"method":"GET","url":"/home","timestamp":"2024-06-01T12:00:00.000Z"}No
5Call next() to continue requestSame as step 2Same as step 3Yes
💡 Logging done and next middleware called, request continues
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 5
logEntryundefined{"method":"GET","url":"/home","timestamp":"2024-06-01T12:00:00.000Z"}Same as after Step 2Same as after Step 2
Key Moments - 2 Insights
Why do we convert the logEntry object to a JSON string before logging?
Because console.log outputs objects differently in various environments, converting to a JSON string ensures consistent, structured log output as shown in step 3 of the execution_table.
What happens if we forget to call next() in the middleware?
The request will hang and not proceed to the next middleware or route handler, stopping the flow after step 4 in the execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of logEntry after step 2?
A{"method":"GET","url":"/home","timestamp":"2024-06-01T12:00:00.000Z"}
B{}
Cundefined
Dnull
💡 Hint
Check the 'logEntry Object' column at step 2 in the execution_table
At which step is the JSON string output to the console?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look at the 'Action' column describing output in the execution_table
If next() is not called, what happens to the request flow?
ARequest continues normally
BRequest hangs and does not proceed
CRequest is logged twice
DRequest is redirected automatically
💡 Hint
Refer to the key_moments explanation about next() and the exit_note in execution_table
Concept Snapshot
Structured logging with JSON in Express:
- Create a log object with request info
- Convert object to JSON string with JSON.stringify
- Output string to console or file
- Call next() to continue middleware chain
- Ensures logs are easy to parse and consistent
Full Transcript
This example shows how to log HTTP requests in Express using structured JSON. When a request comes in, a log object is created with method, URL, and timestamp. This object is converted to a JSON string using JSON.stringify to ensure consistent output. The JSON string is then printed to the console. Finally, next() is called to continue processing the request. This approach helps keep logs organized and easy to analyze.