Skip to main content

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


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)

Uploaded Source

Built Distribution

logop-0.2.0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

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

Hashes for logop-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1d1db87add8dfcb04cb0e6e130c6439492ded77fe3a9ea7075ab2121a562f070
MD5 8f8549e4d879bf300c69d8a1cb1613fb
BLAKE2b-256 c8b906eeee875a041d272e5a1aa68a7b97ce62a2c39e29a6c250c880d9d2ead3

See more details on using hashes here.

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

Hashes for logop-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54c8291e5ee03fd2043923467b797770f7cd2a3b1bbc0dcdee99261d20026c9a
MD5 3f241d3a06e27715cd1ff628a534b312
BLAKE2b-256 4ec0a1fa27b0d66b05f8fd5bce2b9711dd112944e968885320cfe90fca1575b2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page