A simple log module
Project description
logop
一个简易的 Python 日志输出模块
安装
使用 pip 安装 logop
pip install logop
快速上手
import logop
# 初始化一个日志对象
log = logop.Logging()
# 进行日志输出
log.info('Hello world.')
log.error('Exception.')
为控制台日志着色
import logop
# 拒绝日志对象自动初始化一个标准输出对象
log = logop.Logging(stdout=False)
# 初始化一个带控制台着色的标准输出对象
stdob = logop.Logop_standard_up()
# 将输出对象添加到日志对象中
log.add_op(stdob)
# 进行日志输出
log.info('Hello world.')
log.error('Exception.')
输出日志到文件
import logop
# 初始化一个日志对象
log = logop.Logging()
# 初始化一个日志文件输出对象
fileob = logop.Logop_file(pathdir='.', pathname='$(.date).log')
log.add_op(fileob)
# 进行日志输出
log.info('Hello world.')
log.error('Exception.')
常量
# 日志等级
logop.ALL
.TRACE
.DEBUG
.INFO
.WARN
.WARNING
.SEVERE
.ERROR
.FATAL
.CRITICAL
.OFF
# 日志格式
logop.FORMAT.SIMPLE
.DEFAULT
.DEBUG
日志格式可用信息
属性名称 | 格式 | 描述 | 示例 |
---|---|---|---|
.level | $(.level) | 日志等级 | 0 |
.levelname | $(.levelname) | 等级名称 | INFO |
.date | $(.date) | 日期 | 2020-04-01 |
.time | $(.time) | 时间 | 08:00:00 |
.moment | $(.moment) | 毫秒 | 123 |
.micro | $(.micro) | 微秒 | 512 |
.file | $(.file) | 文件相对路径 | lib/a.py |
.filepath | $(.filepath) | 文件绝对路径 | /opt/lib/a.py |
.filename | $(.filename) | 文件名 | a.py |
.process | $(.process) | 进程名 | Process |
.thread | $(.thread) | 线程名 | Main |
.function | $(.function) | 函数 | run |
.line | $(.line) | 行 | 56 |
.message | $(.message) | 消息 | Hello world |
例: "[$(.date) $(.time)] [$(.thread)/$(.levelname)] $(.message)"
Logging 日志对象
logop.Logging(level: int = INFO, op_format: str = FORMAT.DEFAULT, *, stdout: bool = True)
# 初始化一个日志对象
# level: 日志等级, 低于这个等级的日志不会被显示/输出, 建议通过日志等级常量设置.
# op_format: 日志格式, 日志消息的组合方式, 输出对象不一定会遵守这个格式.
# stdout: 是否自动初始化一个标准输出对象.
.setlevel(level: int) -> None
# 设置日志等级
# 低于这个等级的日志不会被显示/输出, 建议通过日志等级常量设置.
.setformat(op_format: str) -> None
# 设置日志格式
# 日志消息的组合方式, 输出对象不一定会遵守这个格式, 可以通过日志格式常量设置.
.add_op(target: Logoutput) -> None
# 添加输出对象
# 输出对象的数量不能超过 16 个.
# 输出对象必须继承自 Logoutput , 且 .op_type 标识为 'standard' 的输出对象只能有一个.
# 该方法会改变输出对象的 op_ident 标识, 以保证它在当前日志对象里面是唯一的.
.del_op(ident: int) -> None
# 删除输出对象
# 将输出对象从日志对象中移除, 提供的 ident 值必须是存在的.
# 当提供一个不存在于日志对象中的 ident 值时会抛出 ValueError 异常.
.get_op_list() -> list[dict]
# 获取输出对象信息列表
.get_op_count() -> int
# 获取输出对象的数量
.get_op_object(ident: int) -> Logoutput | None
# 获取到输出对象
# 当提供的 ident 标识存在时返回这个输出对象, 否则返回 None.
.get_stdop_object() -> Logoutput | None
# 获取到标准输出对象
# 当存在标准输出对象时返回输出对象, 否则返回 None.
.call(level: int = INFO, levelname: str = 'INFO', message: str = '',
*, double_back: bool = False) -> None
# 输出日志
# level: 日志等级, 当等级低于设置等级时不进行日志输出.
# levelname: 日志名称, 任意, 但推荐为 INFO, WARN, ERROR, DEBUG 之类的.
# message: 日志消息.
# double_back: 是否要从上上个栈帧中获取状态信息, 对该方法进行包装时会用到它.
.trace(message) -> None
# 输出一个 TRACE 级别的日志
.debug(message) -> None
.info(message) -> None
.warn(message) -> None
.warning(message) -> None
.severe(message) -> None
.error(message) -> None
.fatal(message) -> None
.critical(message) -> None
# 同上类似
.TRACE(message) -> None
.DEBUG(message) -> None
.INFO(message) -> None
.WARN(message) -> None
.WARNING(message) -> None
.SEVERE(message) -> None
.ERROR(message) -> None
.FATAL(message) -> None
.CRITICAL(message) -> None
# 同上类似, 大写方法名只是为了满足部分癖好
.print(message: object = '') -> None
# 将消息使用标准输出对象输出
# 类似于 print(), 当不存在标准输出对象时不会有任何效果.
Logoutput 输出对象
logop.Logoutput(name: str = ...)
# 所有的所有的输出对象都必须继承自 Logoutput
# name: 设置 op_name 标识, 必须是 str 类型, 否则保持默认.
.call(content: dict, op_format: str = FORMAT.DEFAULT) -> None
# 输出日志
# 在日志对象需要进行输出时会调用这个方法
# content: 日志内容, 通常是日志对象收集到的信息
# op_format: 日志格式.
.add_exception_count() -> None
# 增加异常计数
# 在日志对象调用输出对象的 call 方法发送异常时会调用这个方法,
# 使得输出对象内部的异常计数 + 1.
.op_type -> str
# 输出对象的类型标识
# 非标准输出对象需要重写这个标识
.op_name -> str
# 输出对象的名称标识
# 可以用于区分同类型的输出对象
.op_ident -> int
# 鉴别标识
# 在输出对象被成功添加到日志对象时会修改这个标识,
# 以保证它在所在日志对象里面是唯一的.
.op_exception_count -> int
# 异常计数
# 记录该输出对象出现异常的次数
Logop_file 日志文件 - 输出对象
logop.Logop_file(name: str = ..., pathdir: Union[str, list, tuple] = 'logs',
pathname: str = '$(.date).log', encoding: str = 'utf-8')
# name: 同 Logoutput
# pathdir: 保存日志文件的文件夹路径, 多级路径可以通过列表和元组的方式传入.
# pathname: 日志的文件名.
# encoding: 文件编码.
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
logop-0.2.0.tar.gz
(7.0 kB
view details)
Built Distribution
logop-0.2.0-py3-none-any.whl
(7.4 kB
view details)
File details
Details for the file logop-0.2.0.tar.gz
.
File metadata
- Download URL: logop-0.2.0.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d1db87add8dfcb04cb0e6e130c6439492ded77fe3a9ea7075ab2121a562f070 |
|
MD5 | 8f8549e4d879bf300c69d8a1cb1613fb |
|
BLAKE2b-256 | c8b906eeee875a041d272e5a1aa68a7b97ce62a2c39e29a6c250c880d9d2ead3 |
File details
Details for the file logop-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: logop-0.2.0-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54c8291e5ee03fd2043923467b797770f7cd2a3b1bbc0dcdee99261d20026c9a |
|
MD5 | 3f241d3a06e27715cd1ff628a534b312 |
|
BLAKE2b-256 | 4ec0a1fa27b0d66b05f8fd5bce2b9711dd112944e968885320cfe90fca1575b2 |