Adding Logging to a Python Application

1 hour
  • 2 Learning Objectives

About this Hands-on Lab

Logging is a powerful tool. It can be used for many different functions. For example, it can used in a legal situation as evidence for who has done what while using the application. It can be used to rebuild a database if the database is destroyed without a viable backup. It can also help a developer track down elusive errors when an application has gone to production.

You will need basic Python programming and SQL skills for this lab:
– [Certified Associate in Python Programming Certification](https://linuxacademy.com/cp/modules/view/id/470)

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Add Logging to tally.py

You should add logging to tally.py. Create a separate log file for each item. The file should be named <item-number>.log. The log level should be info and each log message should be date:level:message. Finally, log the final tally message.

tally.py:

import logging

def tally_votes(data):
    """
    the example voting data and operations are in the __main__ section
    write code that will ask for user input for item number being voted on
    create a log file named <voting item>.log
    tally votes and log each vote
    using: tally = f"Item: {voting_item} Yes: {yes} No: {no}"
    return tally
    """
    voting_item = input("What is the item number for this vote? ").strip()
    file_name = f"{voting_item}.log"

    logging.basicConfig(
        filename=file_name,
        format='%(asctime)s:%(levelname)s:%(message)s', level=logging.INFO)

    yes = 0
    no = 0
    for vote in data:
        if vote == 'y':
            yes += 1
        else:
            no += 1
        # log vote
        logging.info(vote)

    tally = f"Item: {voting_item} Yes: {yes} No: {no}"

    logging.info(tally)

    return tally

if __name__ == "__main__":
    voting_data = ["y", "n", "y", "y", "y", "n"]
    tally = tally_votes(voting_data)
    print(tally)
Review the Log File

Review the log file using cat <logfile> (replacing <logfile> with whatever the file is called).

Congratulations! You have shown that you can do basic logging.

Additional Resources

Atlantic Publishing's Board of Directors asked you to write an application that would allow stock holders to vote, in real time, in an advisory capacity on board issues. You have written a small application that tallies the advisory votes and presents the total to the board. The Board Chairman has asked that you create an audit trail in the event a question is raised about the vote being accurate.

You have the application that tallies the votes. Now you must provide logging to keep track of each vote as it is processed by your app, and give a tally.

Logging In

There are a couple of ways to get in and work with the code. One is to use the credentials provided in the hands-on lab page, log in with SSH, and use a text editor in the terminal.

The other is using VS Code in the browser. If you'd like to go this route, then you will need to navigate to the public IP address of the workstation server (provided in the hands-on lab page) on port 8080 (example: http://PUBLIC_IP:8080). Your password will be the same password that you'd use to connect over SSH.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?