Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions py_node_manager/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from .manager import logger, NodeManager
from .logger import get_logger
from .manager import NodeManager


__version__ = '0.1.0'
__version__ = '0.1.1'


__all__ = ['logger', 'NodeManager']
__all__ = ['get_logger', 'NodeManager']
54 changes: 54 additions & 0 deletions py_node_manager/logger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import logging


# Custom log formatter to add colors for different log levels and show line numbers
class ColoredFormatter(logging.Formatter):
"""Custom log formatter to add colors for different log levels and show line numbers"""

# ANSI color codes
COLORS = {
'DEBUG': '\033[36m', # cyan
'INFO': '\033[32m', # green
'WARNING': '\033[33m', # yellow
'ERROR': '\033[31m', # red
'CRITICAL': '\033[35m', # purple
'RESET': '\033[0m', # reset
}

def format(self, record: logging.LogRecord) -> str:
# Obtain the color corresponding to the log level
log_color = self.COLORS.get(record.levelname, self.COLORS['RESET'])
reset_color = self.COLORS['RESET']

# Add color to log level
record.levelname = f'{log_color}{record.levelname}{reset_color}'

# Call the format method of the parent class
return super().format(record)


def get_logger(logger: logging.Logger) -> logging.Logger:
"""
Configure and return a custom logger with a specific format and color scheme

Args:
logger (logging.Logger): The logger to configure.

Returns:
logging.Logger: The configured logger.
"""
# Configure the logger
logger.setLevel(logging.INFO)

# Create console processor
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)

# Create formatter with function name before line number
formatter = ColoredFormatter('%(asctime)s | %(levelname)s | %(name)s:%(funcName)s:%(lineno)d | %(message)s')
console_handler.setFormatter(formatter)

# Add handler to logger
logger.addHandler(console_handler)

return logger
42 changes: 2 additions & 40 deletions py_node_manager/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,48 +6,10 @@
import urllib.request
import zipfile
from typing import Dict, Optional, Tuple
from .logger import get_logger


# Custom log formatter to add colors for different log levels
class ColoredFormatter(logging.Formatter):
"""Custom log formatter to add colors for different log levels and emoji"""

# ANSI颜色代码
COLORS = {
'DEBUG': '\033[36m', # cyan
'INFO': '\033[32m', # green
'WARNING': '\033[33m', # yellow
'ERROR': '\033[31m', # red
'CRITICAL': '\033[35m', # purple
'RESET': '\033[0m', # reset
}

def format(self, record: logging.LogRecord) -> str:
# Obtain the color corresponding to the log level
log_color = self.COLORS.get(record.levelname, self.COLORS['RESET'])
reset_color = self.COLORS['RESET']

# Add color to log level
record.levelname = f'{log_color}{record.levelname}{reset_color}'

# Call the format method of the parent class
return super().format(record)


# Configure the logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# Create console processor
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)

# Create formatter
formatter = ColoredFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)

# Add handler to logger
logger.addHandler(console_handler)
logger = get_logger(logging.getLogger(__name__))


class NodeManager:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "py-node-manager"
version = "0.1.0"
version = "0.1.1"
description = "A tool library for conveniently using Node.js in Python"
readme = "README.md"
requires-python = ">=3.8"
Expand Down
Loading