English | 简体中文
反馈QQ群(点击加入):323397913
Log78 是一个灵活的 Python 日志库,支持控制台、文件和服务器日志记录。
使用 pip 安装 Log78:
pip install log78
Log78 提供了两种记录日志的方式:一种是简单的方法用于快速记录,另一种是使用 LogEntry
对象进行更详细的记录。以下是如何使用简单方法开始:
from log78 import Log78
# 获取 Log78 实例 - 无需设置!
log = Logger78.instance()
# 记录一条简单的消息
await log.INFO("你好, Log78!")
# 使用摘要和自定义级别记录
await log.WARN("这是一个警告", "警告摘要", 60)
对于更详细的日志记录,您可以使用 LogEntry
对象:
from log78 import LogEntry, BasicInfo
log_entry = LogEntry(basic=BasicInfo(message="详细的日志消息", summary="日志摘要"))
await log.INFO(log_entry)
这两种方法都可以直接使用,默认支持控制台和文件日志记录。
如果您需要自定义日志行为,可以使用 setup
方法:
from log78 import Logger78. ServerLog78, FileLog78, ConsoleLog78
# 创建自定义日志记录器实例(如果需要)
server_logger = ServerLog78()
file_logger = FileLog78("custom_logfile")
console_logger = ConsoleLog78()
# 设置自定义日志记录器
log = Logger78.instance()
log.setup(server_logger, file_logger, console_logger)
debug_kind
: 用于控制记录哪些类型日志的日志调试关键字集合。level_file
,level_console
,level_api
: 分别表示文件日志、控制台日志和API日志的阈值级别。debug_entry
: 用于设置更细粒度的调试条件。
- DEBUG (10): 详细的调试信息,通常仅在开发环境中使用
- INFO (30): 一般信息,可用于跟踪正常的应用程序操作
- WARN (50): 警告信息,表示潜在问题但不影响主要功能
- ERROR (60): 错误和严重问题,需要立即关注
from log78 import Logger78. LogEntry, BasicInfo
log = Logger78.instance()
# 将控制台日志级别调整为0以打印所有日志(用于调试)
log.level_console = 0
# 将文件日志级别调整为60,只记录更严重的警告和错误
log.level_file = 60
# 使用不同级别记录日志
log_entry = LogEntry(basic=BasicInfo(message="调试信息"))
await log.DEBUG(log_entry) # 只会输出到控制台
log_entry.basic.message = "一般信息"
await log.INFO(log_entry) # 会输出到控制台,不会记录到文件
log_entry.basic.message = "警告"
await log.WARN(log_entry) # 会记录到控制台和文件
log_entry.basic.message = "错误"
await log.ERROR(log_entry) # 会记录到控制台、文件和API
DEBUG
,INFO
,WARN
,ERROR
: 记录不同级别的日志。ERROR(Exception, LogEntry)
: 记录异常错误日志。
LogEntry
类提供了结构化信息用于详细日志记录:
from log78 import Logger78. LogEntry, BasicInfo, EventInfo, HttpInfo
log_entry = LogEntry()
log_entry.basic = BasicInfo(
summary="用户登录成功",
log_level_number=30,
log_level="INFO",
message="用户 johndoe 成功登录系统",
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"
)
# 添加自定义属性
log_entry.add_property("customField", "customValue")
await log.INFO(log_entry)