Practice
1. What is the main purpose of configuring logging in a Flask application?
easy
Solution
Step 1: Understand logging purpose
Logging helps track what happens inside the app, especially errors and events.Step 2: Match purpose to options
Only To record app events and errors for debugging and monitoring describes recording events and errors for debugging and monitoring.Final Answer:
To record app events and errors for debugging and monitoring -> Option BQuick Check:
Logging = record events/errors [OK]
Hint: Logging records events and errors to help debugging [OK]
Common Mistakes:
- Thinking logging speeds up the app
- Believing logging fixes bugs automatically
- Confusing logging with UI changes
2. Which of the following is the correct way to set the logging level to DEBUG using
logging.basicConfig in Flask?easy
Solution
Step 1: Recall logging.basicConfig syntax
The correct syntax requires the keyword argument 'level' with a logging constant like logging.DEBUG.Step 2: Check each option
logging.basicConfig(level=logging.DEBUG) uses level=logging.DEBUG correctly. logging.basicConfig(DEBUG) misses 'level='. logging.basicConfig(level='DEBUG') uses a string instead of logging.DEBUG constant. logging.basicConfig(loglevel=logging.DEBUG) uses wrong keyword 'loglevel'.Final Answer:
logging.basicConfig(level=logging.DEBUG) -> Option DQuick Check:
Use level=logging.DEBUG [OK]
Hint: Use level=logging.DEBUG, not just DEBUG or strings [OK]
Common Mistakes:
- Omitting 'level=' keyword
- Passing level as string instead of logging constant
- Using wrong keyword like 'loglevel'
3. Given this Flask code snippet, what will be the output in the console?
import logging
from flask import Flask
app = Flask(__name__)
logging.basicConfig(level=logging.INFO)
@app.route('/')
def home():
app.logger.debug('Debug message')
app.logger.info('Info message')
return 'Hello!'
if __name__ == '__main__':
app.run()medium
Solution
Step 1: Check logging level set
logging.basicConfig(level=logging.INFO) means only INFO and higher levels show, DEBUG is lower and ignored.Step 2: Analyze logged messages
app.logger.debug('Debug message') is below INFO, so ignored. app.logger.info('Info message') is at INFO level, so it appears.Final Answer:
Only 'Info message' will appear in the console -> Option CQuick Check:
Level INFO hides DEBUG [OK]
Hint: INFO level shows info and above, hides debug [OK]
Common Mistakes:
- Assuming debug messages always show
- Confusing logging levels order
- Forgetting to set logging level
4. You wrote this code to configure logging in Flask but no logs appear in the console:
import logging
from flask import Flask
app = Flask(__name__)
logging.basicConfig(format='%(levelname)s:%(message)s')
@app.route('/')
def home():
app.logger.warning('Warning message')
return 'Hi'
What is the likely problem?medium
Solution
Step 1: Understand logging.basicConfig behavior
basicConfig only works if no logging configured before. Flask may configure logging before this call.Step 2: Identify timing issue
Calling basicConfig after Flask app creation may not set level or format properly, so logs don't appear.Final Answer:
Logging level is not set, defaults to WARNING but basicConfig called too late -> Option AQuick Check:
Call basicConfig before app creation [OK]
Hint: Call basicConfig before creating Flask app [OK]
Common Mistakes:
- Setting format but not level
- Calling basicConfig after app creation
- Thinking debug=True controls logging output
5. You want to log messages to a file named
app.log with level WARNING or higher and a custom format showing time, level, and message. Which code snippet correctly configures this in Flask?hard
Solution
Step 1: Check filename argument
Correct argument is 'filename', not 'file'. Options B is wrong.Step 2: Check level argument type
Level must be logging.WARNING constant, not string. Options B and C use string, wrong.Step 3: Check format string placeholders
Correct placeholders are %(asctime)s, %(levelname)s, %(message)s. Options A and B use wrong placeholders.Final Answer:
logging.basicConfig(filename='app.log', level=logging.WARNING, format='%(asctime)s %(levelname)s %(message)s') -> Option AQuick Check:
Use filename, logging.WARNING, correct format placeholders [OK]
Hint: Use filename=, logging.WARNING, and correct format keys [OK]
Common Mistakes:
- Using 'file' instead of 'filename'
- Passing level as string instead of logging constant
- Wrong format placeholders like %(time)s
