Web Development

Logging with Python and Loguru: A Step-by-Step Guide

Improve your Python logging with Loguru. This detailed guide covers installation, simple logging, handlers, formatting, exception handling, colorful terminal logs, and easy log rotation, providing a comprehensive resource for developers aiming to streamline their logging processes.

Logging is a crucial aspect of any robust Python application, offering invaluable insights for debugging, monitoring, and maintaining your software. The Loguru library simplifies logging in Python, making it more powerful and user-friendly. This guide will walk you through everything you need to know about using Loguru, from installation to advanced features like log rotation and colored terminal logging. Whether you’re working with a small script or a large application, this guide is your comprehensive resource.

Installation


Before we dive into the features of Loguru, let’s start with the installation process. Installing Loguru is straightforward and can be done using pip, the Python package installer. Here’s how you can install it:

pip install loguru

Once Loguru is installed, you are ready to integrate it into your Python projects. As a Python development company in the USA, adopting Loguru can significantly enhance your logging capabilities, making your development and debugging processes smoother and more efficient.

Logging Made Simple


Logging Made Simple

Loguru aims to simplify logging in Python, offering an easy-to-use interface. Here’s a basic example to get you started:

from loguru import logger

logger.info("This is an info message")
logger.debug("This is a debug message")
logger.error("This is an error message")

Unlike the standard logging module, Loguru doesn’t require much configuration. It’s ready to use right out of the box, making it ideal for developers who want to quickly implement logging without extensive setup. This simplicity allows you to focus on writing code rather than configuring your logging system.

Loguru’s default logger writes to stderr and formats the log messages in a readable manner. However, you can customize it to suit your specific needs. For example, you can change the log level dynamically:

logger.remove()
logger.add(sys.stderr, level="DEBUG")

Handlers and Formatting


Loguru provides flexible options for configuring log handlers and formatting log messages. Handlers determine where your logs go, such as to a file, an external logging service, or even a custom handler you define. Formatting allows you to customize the appearance of your log messages, making them easier to read and analyze.

# Adding a File Handler:

To write logs to a file, you can add a file handler. Here’s an example:

logger.add("file.log", rotation="10 MB")

This will write log messages to file.log, and automatically rotate the file when it reaches 10 MB in size.

# Custom Formatting:

Customizing the format of your log messages is simple with Loguru. You can specify the format string when adding a handler:

logger.add("file.log", format="{time} {level} {message}")

This will format each log message to include the time, log level, and message. You can also include other attributes such as the filename, function name, and line number.

# Multiple Handlers:

Loguru allows you to configure multiple handlers, each with different formats and destinations. For example, you can log error messages to a file while logging info messages to the console:

logger.add("error.log", level="ERROR", format="{time} {level} {message}")
logger.add(sys.stdout, level="INFO", format="{time} {message}")

This flexibility ensures your logs are tailored to your needs, whether you need detailed logs for debugging or high-level summaries for monitoring.

Catching Exceptions


Catching Exceptions

One of Loguru’s standout features is its ability to catch exceptions effortlessly. By using the catch decorator, you can log exceptions without cluttering your code with try-except blocks. This makes your code cleaner and more maintainable.

Here’s an example:

from loguru import logger

@logger.catch
def divide(a, b):
    return a / b

divide(10, 0)

When an exception occurs, Loguru logs the traceback, helping you quickly identify and resolve issues. This is particularly useful for functions that perform critical operations, as it ensures any errors are logged automatically.

You can also use logger.catch as a context manager to log exceptions in a specific block of code:

with logger.catch():
    result = divide(10, 0)

Terminal Logging with Color


Loguru supports colorful terminal logging, making it easier to distinguish between different log levels. This feature is especially useful during development and debugging, as it allows you to quickly identify important messages.

Here’s how you can add color to your log messages:

logger.info("<green>This is an info message</green>")
logger.error("<red>This is an error message</red>")

With color-coded logs, you can quickly spot critical issues or important information, enhancing your productivity. Loguru supports a variety of color codes and styles, allowing you to customize your log messages to fit your preferences.

Easy Log Rotation


Log rotation is crucial for managing log file sizes and ensuring that logs don’t consume too much disk space. Loguru makes log rotation simple with its built-in rotation feature.

Here’s an example of how to set up log rotation:

logger.add("app.log", rotation="1 week")

This will create a new log file every week, archiving the old files. You can specify various rotation criteria, such as file size, time interval, or even a custom function. For example, to rotate logs based on file size:

logger.add("app.log", rotation="500 MB")

Or to rotate logs daily:

logger.add("app.log", rotation="00:00")

Advanced Features


Loguru offers several advanced features that can further enhance your logging setup. Here are a few examples:

# Backtrace and Diagnostics:

Loguru can include a backtrace and diagnostics in your log messages, providing more context for debugging. This is particularly useful for understanding the sequence of events leading up to an error.

logger.add("file.log", backtrace=True, diagnose=True)

# Serialization:

Loguru can serialize your log messages to JSON, making it easier to integrate with log management systems like ELK (Elasticsearch, Logstash, and Kibana).

logger.add("file.json", serialize=True)

# Asynchronous Logging:

For applications with high logging throughput, Loguru supports asynchronous logging, ensuring that logging operations do not block your main application thread.

logger.add("file.log", enqueue=True)

Conclusion


Loguru is a powerful and user-friendly logging library for Python. Its simplicity and advanced features make it an excellent choice for both beginners and experienced developers. By following this guide, you can easily integrate Loguru into your projects, improving your logging capabilities and making your development process smoother.

For Python development companies in USA, leveraging Loguru can provide significant benefits in terms of monitoring and maintaining your applications. Whether you’re debugging issues or tracking application performance, Loguru’s features make logging an effortless and efficient process.

background-line

Revolutionize Your Digital Presence with Our Mobile & Web Development Service. Trusted Expertise, Innovation, and Success Guaranteed.

Written by

Dipen Majithiya

I am a proactive chief technology officer (CTO) of Shiv Technolabs. I have 10+ years of experience in eCommerce, mobile apps, and web development in the tech industry. I am Known for my strategic insight and have mastered core technical domains. I have empowered numerous business owners with bespoke solutions, fearlessly taking calculated risks and harnessing the latest technological advancements.