📖 Scenario: You are building a simple Flask web application. To keep track of what happens in your app, you want to set up logging. Logging helps you see messages about your app's activity, like errors or important events.
🎯 Goal: Set up basic logging in a Flask app to record messages with different severity levels. You will create a logger, configure its level, and log a test message.
📋 What You'll Learn
Create a Flask app instance named app
Set up a logger named app.logger
Configure the logger level to logging.INFO
Log an info message 'App started'
💡 Why This Matters
🌍 Real World
Logging is essential in real web applications to monitor app behavior, catch errors, and understand user activity.
💼 Career
Knowing how to configure logging in Flask is a basic skill for backend developers and DevOps engineers to maintain and troubleshoot web services.
Progress0 / 4 steps
1
Create a Flask app instance
Import Flask from flask and create a Flask app instance called app.
Flask
Hint
Use Flask(__name__) to create the app instance.
2
Import logging and set logger level
Import the logging module, configure basic logging with logging.basicConfig(level=logging.INFO), and set the app.logger level to logging.INFO.
Flask
Hint
Use logging.basicConfig(level=logging.INFO) and app.logger.setLevel(logging.INFO).
3
Log an info message
Use app.logger.info to log the message 'App started'.
Flask
Hint
Call app.logger.info('App started') to log the message.
4
Run the Flask app and see the log output
Add the code to run the Flask app only if the script is run directly. Use app.run(). When you run the app, the info log message 'App started' should appear in the console.
Flask
Hint
Use the standard Python check if __name__ == '__main__': to run the app.
Practice
(1/5)
1. What is the main purpose of configuring logging in a Flask application?
easy
A. To speed up the app's response time
B. To record app events and errors for debugging and monitoring
C. To automatically fix bugs in the code
D. To change the app's user interface colors
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 B
Quick 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
A. logging.basicConfig(level='DEBUG')
B. logging.basicConfig(DEBUG)
C. logging.basicConfig(loglevel=logging.DEBUG)
D. logging.basicConfig(level=logging.DEBUG)
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 D
Quick 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?
A. Logging level is not set, defaults to WARNING but basicConfig called too late
B. Format string is incorrect and causes errors
C. app.logger.warning is not a valid method
D. Flask app must be run with debug=True to see logs
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 A
Quick 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
A. logging.basicConfig(filename='app.log', level=logging.WARNING, format='%(asctime)s %(levelname)s %(message)s')
B. logging.basicConfig(file='app.log', level='WARNING', format='%(time)s %(level)s %(msg)s')
C. logging.basicConfig(filename='app.log', level='WARNING', format='%(asctime)s %(levelname)s %(message)s')
D. logging.basicConfig(filename='app.log', level=logging.WARNING, format='%(time)s %(level)s %(message)s')
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 A
Quick 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
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.