Log78 is a flexible Python logging library that supports console, file, and server logging.
Install Log78 using pip:
pip install log78 Log78 provides two ways to log messages: a simple method for quick logging and a more detailed method using LogEntry objects. Here's how to get started with the simple method:
from log78 import Log78 # Get the Log78 instance - no setup required! log = Logger78.instance() # Log a simple message await log.INFO("Hello, Log78!") # Log with a summary and custom level await log.WARN("This is a warning", "Warning Summary", 60)For more detailed logging, you can use the LogEntry object:
from log78 import LogEntry, BasicInfo log_entry = LogEntry(basic=BasicInfo(message="Detailed log message", summary="Log Summary")) await log.INFO(log_entry)Both methods are ready to use out of the box with default console and file logging.
If you need custom logging behavior, you can use the setup method:
from log78 import Logger78. ServerLog78, FileLog78, ConsoleLog78 # Create custom logger instances if needed server_logger = ServerLog78() file_logger = FileLog78("custom_logfile") console_logger = ConsoleLog78() # Setup custom loggers log = Logger78.instance() log.setup(server_logger, file_logger, console_logger)debug_kind: A set of log debugging keywords used to control which types of logs are recorded.level_file,level_console,level_api: Respectively represent the threshold levels for file logs, console logs, and API logs.debug_entry: Used to set more fine-grained debugging conditions.
- DEBUG (10): Detailed debug information, typically used only in development environments
- INFO (30): General information, can be used to track normal application operations
- WARN (50): Warning information, indicating potential issues but not affecting main functionality
- ERROR (60): Errors and serious problems that require immediate attention
from log78 import Logger78. LogEntry, BasicInfo log = Logger78.instance() # Adjust console log level to 0 to print all logs (for debugging) log.level_console = 0 # Adjust file log level to 60 to only record more severe warnings and errors log.level_file = 60 # Using different levels to record logs log_entry = LogEntry(basic=BasicInfo(message="Debug information")) await log.DEBUG(log_entry) # Will only output to console log_entry.basic.message = "General information" await log.INFO(log_entry) # Will output to console, not recorded in file log_entry.basic.message = "Warning" await log.WARN(log_entry) # Will be recorded in both console and file log_entry.basic.message = "Error" await log.ERROR(log_entry) # Will be recorded in console, file, and APIDEBUG,INFO,WARN,ERROR: Record logs of different levels.ERROR(Exception, LogEntry): Records exception error logs.
The LogEntry class provides structured information for detailed logging:
from log78 import Logger78. LogEntry, BasicInfo, EventInfo, HttpInfo log_entry = LogEntry() log_entry.basic = BasicInfo( summary="User login successful", log_level_number=30, log_level="INFO", message="User johndoe successfully logged into the system", service_name="AuthService", user_id="user123", user_name="johndoe" ) log_entry.event = EventInfo( event_category="authentication", event_action="login", event_outcome="success" ) log_entry.http = HttpInfo( http_request_method="POST", http_request_body_content="{\"username\":\"johndoe\",\"password\":\"*****\"}", http_response_status_code=200, url_original="https://api.example.com/login" ) # Add custom properties log_entry.add_property("customField", "customValue") await log.INFO(log_entry)For more detailed information, please refer to the project's GitHub repository or the API documentation.