Advanced Logger: Your Ultimate Tool for Robust Logging
Logging is an integral part of any software application development process. A reliable logger helps developers track the flow of their application and debug issues effectively. Today, we introduce advanced-logger, a powerful and versatile logging library designed to provide enhanced features over traditional loggers.
Features of Advanced Logger
- Multiple Log Levels: INFO, DEBUG, WARN, ERROR
- Custom Handlers and Formatters
- File and Console Output
- Asynchronous Logging
- Structured Logging
- Contextual Logger Configuration
- Easy Integration with Existing Systems
Getting Started with Advanced Logger
Let’s dive into the APIs provided by advanced-logger along with code snippets to help you get started quickly.
Installation
pip install advanced-logger
Basic Usage
from advanced_logger import Logger
logger = Logger(name="my_logger")
logger.info("This is an info message") logger.debug("This is a debug message") logger.warn("This is a warning message") logger.error("This is an error message")
Custom Handlers
from advanced_logger import Logger, FileHandler, ConsoleHandler
logger = Logger(name="custom_logger") file_handler = FileHandler("logfile.log") console_handler = ConsoleHandler()
logger.add_handler(file_handler) logger.add_handler(console_handler)
logger.info("Logging to both file and console")
Custom Formatters
from advanced_logger import Logger, Formatter
logger = Logger(name="formatted_logger") formatter = Formatter("%(levelname)s - %(message)s") logger.set_formatter(formatter)
logger.info("This is an info message with custom format")
Asynchronous Logging
from advanced_logger import Logger import threading, time
logger = Logger(name="async_logger", async_mode=True)
def log_messages():
for i in range(5):
logger.info(f"Async log message {i}")
time.sleep(1)
thread = threading.Thread(target=log_messages) thread.start() thread.join()
Structured Logging
from advanced_logger import Logger, StructuredFormatter
logger = Logger(name="structured_logger") formatter = StructuredFormatter(fmt="%(timestamp)s - %(levelname)s - %(message)s - %(data)s")
logger.set_formatter(formatter) logger.info("Structured log message", data={"key": "value"})
Real-World Application Example
from advanced_logger import Logger, FileHandler, ConsoleHandler, Formatter
class MyApp:
def __init__(self):
self.logger = Logger(name="my_app_logger")
file_handler = FileHandler("app.log")
console_handler = ConsoleHandler()
formatter = Formatter("%(levelname)s:%(name)s:%(message)s")
self.logger.add_handler(file_handler)
self.logger.add_handler(console_handler)
self.logger.set_formatter(formatter)
def run(self):
self.logger.info("Application started")
try:
# Application logic here
self.logger.debug("Running application logic")
result = 10 / 0 # This will cause an exception
except Exception as e:
self.logger.error(f"An error occurred: {e}")
self.logger.info("Application finished")
if __name__ == "__main__":
app = MyApp()
app.run()
With advanced-logger, you can take your application’s logging to the next level, making debugging and monitoring processes much more efficient.
Hash: 2a3a4bb6cf0dab6e88846bfd80bb52ea6b6d1e6a9ac8cf43adbceb15cf25a6d0