2023-03-10

Loguru

What is Loguru

Loguru is a powerful logging library for Python, designed to simplify the logging process and make it easier for developers to track the behavior of their applications. It provides an intuitive and easy-to-use interface, allowing developers to set up a logger and start logging with just a few lines of code.

One of the key advantages of Loguru is its flexibility. It offers a range of logging levels, from the basic debug and info messages to more severe warning and error messages, allowing developers to customize the logging output to their specific needs. Additionally, Loguru provides advanced features such as exception handling, rotating log files, and logging to multiple destinations.

Loguru is also known for its ease of use. Its API is designed to be simple and straightforward, with intuitive methods and clear documentation. Developers can easily set up a logger, customize the log format, and start logging in just a few lines of code.

Comparison to logging

Loguru and logging are two popular logging libraries for Python that provide similar functionality but with some key differences. In this article, I will compare Loguru and logging to help you decide which one is best suited for your needs.

  • Ease of Use
    Loguru is known for its ease of use, with an API that is designed to be simple and straightforward. Logging, on the other hand, can be more complex and requires more configuration to set up.

  • Customization
    Loguru offers more flexibility for customization, allowing developers to easily configure the log format and choose from a range of logging levels. Logging, while still customizable, may require more code to achieve the same level of flexibility.

  • Exception Handling
    Loguru provides advanced exception handling features, allowing developers to log and handle exceptions more easily. Logging can handle exceptions, but may require more code to achieve the same level of functionality.

  • Performance
    Loguru is known for its fast and efficient logging performance, with minimal overhead. Logging, while still performant, may have more overhead due to its more complex architecture.

  • Compatibility
    Logging is part of the Python standard library, meaning it is available in all Python installations by default. Loguru, while not part of the standard library, is still easy to install and use in most Python environments.

Installing Loguru

To install Loguru, open a terminal or command prompt and run the following command:

bash
$ pip install loguru

Logging Basics with Loguru

In this article, I will cover the basics of logging with Loguru, including setting up a logger, logging levels, log record format, and writing log messages.

Setting up a Logger

To set up a logger with Loguru, simply call the logger.add() method with the desired output destination. For example, to set up a logger that logs messages to the console, you can use the following code:

python
from loguru import logger

logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="DEBUG")

This code sets up a logger that logs messages to sys.stderr with a custom log record format that includes the timestamp, logging level, and log message. The filter parameter can be used to filter log messages by the name of the module that generated them, while the level parameter sets the minimum logging level for messages to be logged.

Logging Levels

Loguru provides several logging levels that can be used to categorize log messages by severity. The available logging levels, in increasing order of severity, are TRACE, DEBUG, INFO, SUCCESS, WARNING, ERROR, and CRITICAL. To log a message at a specific logging level, simply call the corresponding logging method on the logger object. For example, to log a message at the info level, you can use the following code:

python
logger.info("This is an info message.")

This code logs a message at the INFO level, which will be output to the console or file, depending on your logger configuration.

Log Record Format

Loguru provides a flexible log record format that allows you to customize the information included in each log message. The log record format is specified using the format parameter of the logger.add() method. For example, to include the module name, function name, and line number in each log message, you can use the following log record format:

python
logger.add(sys.stderr, format="{time} {level} {module}:{function}:{line} {message}", filter="my_module", level="DEBUG")

This code sets up a logger with a custom log record format that includes the module name, function name, and line number of the code that generated each log message.

Writing Log Messages

To write a log message with Loguru, simply call the appropriate logging method on the logger object. For example, to write a debug message, you can use the following code:

python
logger.debug("This is a debug message.")

This code writes a debug message to the console or file, depending on your logger configuration.

Advanced Logging Techniques with Loguru

We will cover some of the advanced logging techniques that can be used with Loguru, including exception handling, rotating log files, logging to multiple destinations, and customizing log output.

Exception Handling

Loguru provides advanced exception handling features that make it easy to log and handle exceptions in your code. To log an exception with Loguru, simply call the logger.exception() method and pass in the exception object. For example:

python
try:
    # Some code that may raise an exception
except Exception as e:
    logger.exception("An error occurred: {e}")

This code logs an error message with a stack trace if an exception is raised in the try block.

Rotating Log Files

Loguru provides a built-in feature for rotating log files, which is useful for managing large log files and preventing them from becoming too large. To enable log file rotation, simply use the rotation parameter of the logger.add() method. For example:

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

This code sets up a logger that rotates the log file every 500 megabytes.

Logging to Multiple Destinations

Loguru allows you to log messages to multiple destinations simultaneously. To log messages to multiple destinations, simply call the logger.add() method multiple times with different output destinations. For example:

python
logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="DEBUG")
logger.add("app.log", format="{time} {level} {message}", filter="my_module", level="DEBUG")

This code sets up a logger that logs messages to both sys.stderr and app.log.

Customizing Log Output

Loguru provides a range of options for customizing the output of log messages, including adding custom metadata, filtering messages based on criteria, and applying custom formatting to log messages. For example:

python
logger.add("app.log", format="{time} {level} {message} {extra[user]}")
logger.bind(user="Alice").info("This is a log message.")

This code sets up a logger that includes custom metadata in the log message output, and then logs a message with the user metadata value set to "Alice".

Best Practices for Using Loguru

To use Loguru effectively, it is important to follow some best practices. In this article, I will cover some of the best practices for using Loguru, including log message consistency, logging in production, and debugging with logs.

  • Log Message Consistency
    It is important to maintain consistency in log messages across your application. This means using the same log message format and logging level consistently throughout your code. Consistent log messages make it easier to identify and debug issues in your code, and also make it easier to analyze and interpret log data.

  • Logging in Production
    When logging in a production environment, it is important to be mindful of the impact that logging can have on performance and disk space. To minimize the impact of logging on your application, consider using a more conservative logging level in production, such as INFO or WARNING. It is also a good idea to use log file rotation and to limit the size of log files to prevent them from taking up too much disk space.

  • Debugging with Logs
    Loguru can be a powerful tool for debugging issues in your code. When debugging with logs, it is important to log enough information to be able to trace the behavior of your application, but not so much that it becomes overwhelming. Consider using log messages to track the flow of your application and to record the inputs and outputs of critical functions.

References

https://github.com/Delgan/loguru
https://loguru.readthedocs.io/en/stable/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!