Bird
Raised Fist0
Expressframework~5 mins

Morgan for HTTP request logging in Express - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is Morgan in Express.js?
Morgan is a middleware for Express.js that logs HTTP requests to the console or a file, helping developers see details about incoming requests.
Click to reveal answer
beginner
How do you install Morgan in an Express project?
You install Morgan using npm with the command: npm install morgan.
Click to reveal answer
beginner
How do you use Morgan to log all HTTP requests in Express?
You add Morgan as middleware in your Express app like this:<br><pre>const morgan = require('morgan');
app.use(morgan('dev'));</pre><br>This logs requests in a concise colored format.
Click to reveal answer
intermediate
What does the 'dev' format in Morgan do?
The 'dev' format logs HTTP method, URL, status code, response time, and response length in a colored, easy-to-read style.
Click to reveal answer
intermediate
How can you log HTTP requests to a file using Morgan?
You create a write stream and pass it to Morgan like this:<br><pre>const fs = require('fs');
const path = require('path');
const accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' });
app.use(morgan('combined', { stream: accessLogStream }));</pre><br>This saves logs in Apache combined format to 'access.log'.
Click to reveal answer
What is the primary purpose of Morgan in an Express app?
ATo log HTTP requests
BTo handle database connections
CTo serve static files
DTo manage user sessions
Which command installs Morgan in a Node.js project?
Anpm install morgan
Bnpm install logger
Cnpm install express
Dnpm install http
What does the 'combined' format in Morgan include?
AOnly HTTP method and URL
BOnly IP address and date
COnly status code and response time
DHTTP method, URL, status, response time, and user agent
How do you add Morgan middleware to an Express app?
Aapp.get(morgan)
Bapp.use(morgan('dev'))
Capp.listen(morgan)
Dapp.post(morgan)
Which Node.js module is used to create a write stream for logging Morgan output to a file?
Ahttp
Burl
Cfs
Dpath
Explain how to set up Morgan in an Express app to log HTTP requests to the console.
Think about npm install, require, and middleware usage.
You got /4 concepts.
    Describe how to configure Morgan to save HTTP request logs to a file instead of the console.
    Consider how to write logs to a file using Node.js modules.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using morgan in an Express app?
      easy
      A. To log HTTP requests for monitoring server activity
      B. To handle database connections
      C. To serve static files
      D. To manage user sessions

      Solution

      1. Step 1: Understand Morgan's role

        Morgan is a middleware that logs details about HTTP requests to the console or a file.
      2. Step 2: Compare options with Morgan's function

        Only logging HTTP requests matches Morgan's purpose; other options relate to different tasks.
      3. Final Answer:

        To log HTTP requests for monitoring server activity -> Option A
      4. Quick Check:

        Logging HTTP requests = A [OK]
      Hint: Morgan logs requests, not database or sessions [OK]
      Common Mistakes:
      • Confusing Morgan with session or static file middleware
      • Thinking Morgan manages database connections
      • Assuming Morgan serves files
      2. Which of the following is the correct way to add Morgan middleware with the 'tiny' format in an Express app?
      easy
      A. app.use(morgan.format('tiny'))
      B. app.use(morgan('tiny'))
      C. app.use('morgan', 'tiny')
      D. app.use(morgan.tiny())

      Solution

      1. Step 1: Recall Morgan usage syntax

        Morgan is used as middleware by calling morgan('format') inside app.use().
      2. Step 2: Check each option's syntax

        Only app.use(morgan('tiny')) matches the correct syntax; others are invalid method calls or parameters.
      3. Final Answer:

        app.use(morgan('tiny')) -> Option B
      4. Quick Check:

        Use morgan('format') inside app.use() = D [OK]
      Hint: Use morgan('format') inside app.use() exactly [OK]
      Common Mistakes:
      • Calling morgan as a method like morgan.tiny()
      • Passing strings directly to app.use() without morgan()
      • Using non-existent morgan.format() method
      3. Given this Express code snippet, what will Morgan log when a GET request is made to '/'?
      const express = require('express');
      const morgan = require('morgan');
      const app = express();
      app.use(morgan('dev'));
      app.get('/', (req, res) => res.send('Hello'));
      app.listen(3000);
      medium
      A. GET / 200 5 - 0.123 ms
      B. GET / 404 - - ms
      C. POST / 200 5 - 0.123 ms
      D. Error: Morgan format not found

      Solution

      1. Step 1: Identify the HTTP method and route

        The code handles GET requests to '/', so a GET / request is valid and returns 200 status.
      2. Step 2: Understand Morgan 'dev' format output

        The 'dev' format logs method, URL, status code, response time, and response size roughly like 'GET / 200 5 - 0.123 ms'.
      3. Final Answer:

        GET / 200 5 - 0.123 ms -> Option A
      4. Quick Check:

        GET / with 200 status logs as in B [OK]
      Hint: GET '/' with 'dev' logs method, URL, status, time [OK]
      Common Mistakes:
      • Confusing POST with GET method
      • Assuming 404 status for existing route
      • Expecting error from Morgan format
      4. You added Morgan to your Express app with app.use(morgan('combined')), but no logs appear in the console. What is the most likely cause?
      medium
      A. Morgan requires a database connection to log
      B. Morgan does not support 'combined' format
      C. Morgan middleware is added after route handlers
      D. Morgan only logs errors, not requests

      Solution

      1. Step 1: Understand middleware order importance

        Express runs middleware in order. If Morgan is added after routes, requests may not pass through it.
      2. Step 2: Check Morgan format and behavior

        'combined' is a valid format; Morgan logs all requests, not just errors; it does not need a database.
      3. Final Answer:

        Morgan middleware is added after route handlers -> Option C
      4. Quick Check:

        Middleware order matters; Morgan must be before routes [OK]
      Hint: Add Morgan before routes to see logs [OK]
      Common Mistakes:
      • Thinking 'combined' format is invalid
      • Believing Morgan logs only errors
      • Assuming Morgan needs a database
      5. You want to log HTTP requests only if the response status is 400 or higher using Morgan. Which code snippet correctly achieves this?
      hard
      A. app.use(morgan('combined', { filter: (req, res) => res.statusCode >= 400 }))
      B. app.use(morgan('combined', { skip: (req, res) => res.statusCode >= 400 }))
      C. app.use(morgan('combined', { only: (req, res) => res.statusCode >= 400 }))
      D. app.use(morgan('combined', { skip: (req, res) => res.statusCode < 400 }))

      Solution

      1. Step 1: Understand Morgan's skip option

        The 'skip' option is a function that returns true to skip logging that request.
      2. Step 2: Apply condition to skip requests with status below 400

        To log only 400 or higher, skip requests where statusCode is less than 400.
      3. Step 3: Verify other options

        'filter' and 'only' are not valid Morgan options; app.use(morgan('combined', { skip: (req, res) => res.statusCode >= 400 })) skips 400+ which is opposite of desired.
      4. Final Answer:

        app.use(morgan('combined', { skip: (req, res) => res.statusCode < 400 })) -> Option D
      5. Quick Check:

        Skip if status < 400 to log 400+ [OK]
      Hint: Use skip to ignore status below 400 [OK]
      Common Mistakes:
      • Using skip condition backwards
      • Using invalid options like filter or only
      • Confusing skip with logging condition
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard