moon-logger, a Python logging library
Project description
Moon Logger
The Moon Logger is a Python logging utility with customizable features for handling both stream and file logging.
Requirements
Table of Contents
Installation
Install the Moon Logger using git:
git clone https://github.com/reslaid/moon.git
Installing the Moon Logger using PyPI:
-
NT:
pip install moonlogger
-
Posix:
pip3 install moonlogger
Usage
Initializing Moon
from moon.logger import Moon
from moon.formats import Formats
from moon._types import LogLevel
# Create an instance of the Moon logger
moon = Moon(
name=__name__, # Name of the logger (defaults to the name of the current module)
log_file='moon.json', # Path to the log file (defaults to 'moon.json')
stream_handler=True, # Whether to use a stream handler (defaults to True)
file_handler=True, # Whether to use a file handler (defaults to True)
disabled=False, # Whether the logger is disabled (defaults to False)
stream_level=LogLevel.DEBUG, # Log level for the stream handler (defaults to DEBUG)
file_level=LogLevel.DEBUG, # Log level for the file handler (defaults to DEBUG)
stream_format=Formats.CLang(), # Log format for the stream handler (default is Formats.CLang())
file_format=Formats.JsonIndented() # Log format for the file handler (default is Formats.JsonIndented())
)
Log Levels
The Moon Logger supports the following log levels:
LogLevel.DEBUGLogLevel.INFOLogLevel.WARNINGLogLevel.ERRORLogLevel.CRITICAL
Archiving Logs:
# Archive the log file into a ZIP file and remove the original log file
moon.archive()
Custom Formatting:
# Set a custom log format for all handlers in the Moon logger
moon.set_log_format("[{name}] - [{levelname}]: {message}")
Formats built into moon logger:
CLangJsonCsvTableHtmlXmlMarkdownYamlSyslogJsonIndentedLogstashShortJsonColoredConsoleDelimiterSeparatedJsonTracebackTracebackV2HexDumpBase64BinaryEmoji
Logger Methods:
moon.set_formatter(formatter): Set a custom formatter for the logger.moon.add_formatter(formatter): Add a formatter to the logger.moon.del_formatters(): Remove all formatters from the logger.moon.del_formatter(formatter): Remove a specific formatter from the logger.moon.edit_format(new_log_format): Edit the log format, ensuring required placeholders are present.moon.reset_format(): Reset the log format to the default.moon.base_logger(): Getting the base logger.
Examples
- Logging Message:
# Import the Moon logger and Formats module
from moon.logger import Moon
from moon.formats import Formats
# Initialize the Moon logger
logger = Moon(
name=__name__,
file_handler=False, # Disable file handler
stream_format=Formats.CLang() # Use CLang format for stream handler
).base_logger()
# Log a debug message
logger.debug(
msg="message"
)
# Log an informational message
logger.info(
msg="message"
)
# Log a warning message
logger.warning(
msg="message"
)
# Log an error message
logger.error(
msg="message"
)
# Log a critical message
logger.critical(
msg="message"
)
# Log a fatal message
logger.fatal(
msg="message"
)
- Custom log format:
from moon.logger import Moon, logging
# Define a custom log format string
custom_log_format = logging.Formatter(
"[{levelname}] [{asctime}] - {message}",
style="{"
)
# Initialize the Moon logger with the custom log format
logger = Moon(
name=__name__,
file_handler=False,
stream_format=custom_log_format
).base_logger()
# Log a message using the custom format
logger.info(
msg="Custom log message"
)
- Built-in log format:
from moon.logger import Moon
from moon.formats import Formats
# Initialize the Moon logger with the built-in log format
logger = Moon(
name=__name__,
file_handler=False,
stream_format=Formats.CLang() # You can choose any built-in log format
).base_logger()
# Log a message using the built-in log format
logger.info(
msg="Custom log message"
)
- Archiving a file:
from moon.logger import Moon
from moon.formats import Formats
# Initialize the Moon logger with a file handler and JsonIndented format
moon = Moon(
name=__name__,
log_file="moon.json",
file_handler=True,
file_format=Formats.JsonIndented()
)
# Get the base logger from the Moon logger instance
logger = moon.base_logger()
# Log a custom message with an informational level
logger.info(
msg="Custom log message"
)
# Archive log file
moon.archive()
- Changing Log Format Dynamically:
from moon.logger import Moon
# Create an instance of Moon Logger with a file handler
moon = Moon(name="dynamic_format_logger", file_handler=True)
logger = moon.base_logger()
# Log an error message
logger.error(msg="An error occurred.")
# Change the log format
moon.edit_format("[{levelname}] {message} ({asctime})")
# Log another message with the updated format
logger.info(msg="Updated log format.")
- Removing All Formatters:
from moon.logger import Moon
# Create an instance of Moon Logger with a file handler
moon = Moon(name="remove_all_formatters_logger", file_handler=True)
logger = moon.base_logger()
# Add two formatters
moon.add_formatter(Moon.formats.CLang())
moon.add_formatter(Moon.formats.JsonIndented())
# Remove all formatters
moon.del_formatters()
# Log a message with DEBUG level
logger.debug(msg="Logging after removing formatters.")
- Removing a Specific Formatter:
from moon.logger import Moon
from moon.formats import Formats
# Create an instance of Moon Logger with a file handler
moon = Moon(name="remove_formatter_logger", file_handler=True)
logger = moon.base_logger()
# Add two formatters
formatter1 = Formats.Table()
formatter2 = Formats.Json()
moon.add_formatter(formatter1)
moon.add_formatter(formatter2)
# Remove one of the formatters
moon.del_formatter(formatter1)
# Log a message with INFO level
logger.info(msg="Logging after removing one formatter.")
- Conditional Logging Based on Environment:
from moon.logger import Moon
from moon.formats import Formats
import os
# Create an instance of Moon Logger with conditional file handler
enable_file_logging = os.environ.get("ENABLE_FILE_LOGGING", "False").lower() == "true"
logger = Moon(
name="conditional_logger",
file_handler=enable_file_logging,
file_format=Formats.JsonIndented()
).base_logger()
# Log a message with INFO level
logger.info(msg="Conditional log message.")
- Adding a custom file handler:
import logging
from moon.logger import Moon, LogLevel
from moon.formats import Formats
# Create an instance of the Moon logger
moon = Moon(
file_handler=False, # Set to True if you want to include a file handler
stream_handler=False # Set to True if you want to include a stream (console) handler
)
# Create a FileHandler with specific configuration
file_handler = logging.FileHandler(
'moon.json',
mode="a",
encoding="utf-8",
delay=False,
errors=None
)
# Set the formatter for the FileHandler (e.g., JSON format)
file_handler.formatter = Formats.Json()
# Set the logging level for the FileHandler (e.g., DEBUG)
file_handler.setLevel(LogLevel.DEBUG)
# Add the custom handler to the Moon logger
moon.add_handler(handler=file_handler)
# Get Logger Instance
logger = moon.base_logger()
# Log Messages
logger.debug('Hello, Custom Handlers!')
- Adding a custom stream handler:
import logging
from moon.logger import Moon, LogLevel
from moon.formats import Formats
# Create a Moon logger instance without default handlers
moon = Moon(file_handler=False, stream_handler=False)
# Create a StreamHandler
stream_handler = logging.StreamHandler()
# Set the formatter for the StreamHandler (e.g., GNU Logs format)
stream_handler.formatter = Formats.CLang()
# Set the logging level for the StreamHandler (e.g., DEBUG)
stream_handler.setLevel(LogLevel.DEBUG)
# Add the stream handler to the Moon logger
moon.add_handler(handler=stream_handler)
# Log Messages to Stream Handler
logger.debug('Hello, Custom Handlers!')
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file moonlogger-0.9.5.tar.gz.
File metadata
- Download URL: moonlogger-0.9.5.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7761bb20dc5d5222e44affdbc7a028128cf611caaed523c8874340da07a3e0da
|
|
| MD5 |
59e1377179bb0b8bf81c194b5e78bf0a
|
|
| BLAKE2b-256 |
827befdeec42c4716c2e70aebac0cfea04fc85967713187cc961f053411cbd1c
|
File details
Details for the file moonlogger-0.9.5-py3-none-any.whl.
File metadata
- Download URL: moonlogger-0.9.5-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a541f9c3db53400d14e84f6b3841f987564eb587af24c21ad00ae00934632345
|
|
| MD5 |
4e97b13810d83c4deb9d673e0eafefa0
|
|
| BLAKE2b-256 |
0566eae3f481ec019582e116b4903d66a36945aff72aaa13a2294c4ba5adbd4d
|