Practice
1. What is the main purpose of using Winston in an Express application?
easy
Solution
Step 1: Understand Winston's role
Winston is a logging library used to record messages about what the app is doing or errors it encounters.Step 2: Compare with other options
Handling HTTP, database connections, or UI styling are not related to logging.Final Answer:
To save and manage logs about the app's actions and errors -> Option BQuick Check:
Winston logs app events = C [OK]
Hint: Winston is for logging, not for handling requests or UI [OK]
Common Mistakes:
- Confusing logging with request handling
- Thinking Winston manages databases
- Assuming Winston styles the app
2. Which of the following is the correct way to create a Winston logger that logs to the console?
easy
Solution
Step 1: Recall Winston logger creation syntax
Winston uses createLogger with a transports array specifying where to send logs.Step 2: Identify correct transport usage
Using new winston.transports.Console() inside transports array is the correct way.Final Answer:
const logger = winston.createLogger({ transports: [new winston.transports.Console()] }); -> Option CQuick Check:
Logger with Console transport = D [OK]
Hint: Use createLogger with transports array for console logging [OK]
Common Mistakes:
- Passing console directly instead of transport object
- Using non-existent Winston methods
- Incorrect instantiation of logger
3. Given the following code snippet, what will be the output in the console?
const winston = require('winston');
const logger = winston.createLogger({
level: 'warn',
transports: [new winston.transports.Console()]
});
logger.info('Info message');
logger.warn('Warning message');
logger.error('Error message');medium
Solution
Step 1: Understand log level filtering
The logger level is set to 'warn', so it logs messages with level 'warn' and higher (warn, error).Step 2: Check which messages are logged
'info' is below 'warn' so it is ignored; 'warn' and 'error' messages appear in console.Final Answer:
[Warning message]\n[Error message] -> Option DQuick Check:
Level 'warn' logs warn and error only = A [OK]
Hint: Logger level filters out lower priority messages [OK]
Common Mistakes:
- Expecting info messages to appear at warn level
- Confusing log levels order
- Ignoring that error is higher than warn
4. You wrote this Winston logger setup but no logs appear in the console:
const logger = winston.createLogger({
transports: [new winston.transports.Console()]
});
logger.debug('Test log');
What is the most likely reason?medium
Solution
Step 1: Check default log level behavior
Winston's default log level is 'info', which logs 'info' and higher severity levels ('warn', 'error'), ignoring lower levels like 'debug'.Step 2: Verify other options
Console transport is valid; no start() method exists; logger is declared correctly.Final Answer:
The default log level is 'info', so 'debug' messages are ignored -> Option AQuick Check:
Default level blocks lower logs = A [OK]
Hint: Set log level to 'debug' to see debug logs [OK]
Common Mistakes:
- Assuming console transport is invalid
- Looking for non-existent start method
- Ignoring default log level filtering
5. You want to log errors to a file named 'error.log' and all logs to the console in an Express app using Winston. Which configuration correctly achieves this?
hard
Solution
Step 1: Understand transport level filtering
To log errors to file only, set level: 'error' on File transport.Step 2: Ensure console logs all levels
Console transport without level logs all messages by default.Step 3: Check options
const logger = winston.createLogger({ transports: [new winston.transports.Console(), new winston.transports.File({ filename: 'error.log', level: 'error' })] }); matches this setup: Console logs all, File logs errors only.Final Answer:
const logger = winston.createLogger({ transports: [new winston.transports.Console(), new winston.transports.File({ filename: 'error.log', level: 'error' })] }); -> Option AQuick Check:
File logs errors, console logs all = B [OK]
Hint: Set level on file transport only to filter errors [OK]
Common Mistakes:
- Setting wrong levels on transports
- Reversing console and file roles
- Omitting filename or level in file transport
