Skip to main content

A simple log module

Project description

pylogop

一个简易的日志输出模块

安装

使用 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.')

自定义日志等级

import logop

# 初始化一个日志对象
log = logop.Logging()

# 添加日志等级
logop.levelTable['alias1'] = (Logop.INFO, 'name1')
logop.levelTable['alias2'] = (Logop.INFO, 'name2')

# 使用自定义日志等级进行输出
log.alias1('Hello world.')
log.alias2('Hello world.')

常量

# 日志等级
logop.ALL
     .TRACE
     .DEBUG
     .INFO
     .WARN
     .WARNING
     .SEVERE
     .ERROR
     .FATAL
     .CRITICAL
     .OFF

# 日志格式
logop.FORMAT.SIMPLE
            .DEFAULT
            .DEBUG

日志格式可用信息

属性名称 格式 描述 数据类型 示例
.level $(.level) 日志等级 int 0
.levelname $(.levelname) 等级名称 str INFO
.date $(.date) 日期 str 2020-04-01
.time $(.time) 时间 str 08:00:00
.moment $(.moment) 毫秒 str 123
.micro $(.micro) 微秒 str 512
.file $(.file) 文件相对路径 str lib/a.py
.filepath $(.filepath) 文件绝对路径 str /opt/lib/a.py
.filename $(.filename) 文件名 str a.py
.process $(.process) 进程名 str Process
.thread $(.thread) 线程名 str Main
.function $(.function) 函数 str run
.line $(.line) int 56
.message $(.message) 消息 str Hello world

例: "[$(.date) $(.time)] [$(.thread)/$(.levelname)] $(.message)"

logop 函数

.op_character_variable(op_format: str, table: dict) -> str
# 将日志格式转换成完整的日志消息
# op_format: 日志格式
# table: 日志信息表; 通常情况下 BaseLogop.call 可以直接提供 content 参数所接收到的内容 )

BaseLogop 输出对象

logop.BaseLogop(name: str = ...)
# 所有的所有的输出对象都必须继承自 BaseLogop
# name: 设置 op_name 标识, 必须是 str 类型, 否则保持默认.


.call(content: dict, op_format: str = FORMAT.DEFAULT) -> None
# 输出日志
# 在日志对象需要进行输出时会调用这个方法
# content: 日志内容, 通常是日志对象收集到的信息
# op_format: 日志格式
# BaseLogop 的 call 方法不会进行任何输出

.add_exception_count() -> None
# 增加异常计数
# 在日志对象调用输出对象的 call 方法发生异常时会调用这个方法,
# 使得输出对象内部的异常计数 + 1.


.op_type -> str
# 输出对象的类型标识
# 非标准输出对象需要重写这个标识

.op_name -> str
# 输出对象的名称标识
# 可以用于区分同类型的输出对象

.op_ident -> int
# 鉴别标识
# 在输出对象被成功添加到日志对象时会修改这个标识,
# 以保证它在所在日志对象里面是唯一的.

.op_exception_count -> int
# 异常计数
# 记录该输出对象出现异常的次数

Logop_standard (标准)输出对象

logop.Logop_standard()
# 继承 BaseLogop
# 将日志写到标准输出 stdout / stderr.

Logop_standard_up 简单着色 - (标准)输出对象

logop.Logop_standard_up()
# 继承 BaseLogop
# 将日志写到标准输出 stdout / stderr.

Logop_file 日志文件 - 输出对象

logop.Logop_file(name: str = ..., pathdir: Union[str, list, tuple] = 'logs',
                 pathname: str = '$(.date).log', encoding: str = 'utf-8')
# name: 同 BaseLogop
# pathdir: 保存日志文件的文件夹路径, 多级路径可以通过列表和元组的方式传入.
# pathname: 日志的文件名.
# encoding: 文件编码.

Logging 日志对象

logop.Logging(level: int = INFO, op_format: str = FORMAT.DEFAULT, *, stdout: bool = True,
              asynchronous: bool = False, threadname: str = 'LoggingThread')
# 初始化一个日志对象
# level: 日志等级, 低于这个等级的日志不会被显示/输出, 建议通过日志等级常量设置.
# op_format: 日志格式, 日志消息的组合方式, 输出对象不一定会遵守这个格式.
# stdout: 是否自动初始化一个标准输出对象.
# asynchronous: 创建一个线程让日志对象异步执行.
# threadname: 线程名称, 仅在 asynchronous 为 True 时生效.


.setlevel(level: int | str) -> None
# 设置日志等级
# 低于这个等级的日志不会被显示/输出, 可以通过日志等级常量设置.
# 也可以通过日志等级别名设置, 这个别名必须是存在于 levelTable 中的.

.setformat(op_format: str) -> None
# 设置日志格式
# 日志消息的组合方式, 输出对象不一定会遵守这个格式, 可以通过日志格式常量设置.

.add_op(target: BaseLogop) -> None
# 添加输出对象
# 输出对象的数量不能超过 16 个.
# 输出对象必须继承自 BaseLogop , 且 .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) -> BaseLogop | None
# 获取到输出对象
# 当提供的 ident 标识存在时返回这个输出对象, 否则返回 None.

.get_stdop_object() -> BaseLogop | None
# 获取到标准输出对象
# 当存在标准输出对象时返回输出对象, 否则返回 None.

# v0.6.0 new
.join(timeout: float | None = None) -> None
# 等待日志记录器线程结束
# 仅在异步模式下有效, 否则抛出 RuntimeError 异常.
# timeout: 超时时间, 单位为秒.

# v0.6.0 new
.close() -> None
# 关闭日志记录器
# 关闭之后日志记录器不再可用.

# v0.6.0 new
.is_close() -> bool
# 日志记录器是否已被关闭

.call(level: int = INFO, levelname: str = 'INFO', message: str = '',
      *, double_back: bool = False) -> None
# 输出日志
# level: 日志等级, 当等级低于设置等级时不进行日志输出.
# levelname: 日志名称, 任意, 但推荐为 INFO, WARN, ERROR, DEBUG 等标准名称.
# message: 日志消息.
# double_back: 是否要从上上个栈帧中获取状态信息, 对该方法进行包装时会用到它.
# v0.6.0 new
# 若日志记录器被关闭, 会直接抛出 ValueError 异常.

.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
# 同上

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.6.0.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

logop-0.6.0-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file logop-0.6.0.tar.gz.

File metadata

  • Download URL: logop-0.6.0.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for logop-0.6.0.tar.gz
Algorithm Hash digest
SHA256 ff236eafb562a8dd70ef3d5fd0ae1c6c3534a3e1db9e28ca1ae0c439526f88f5
MD5 887663887b263b1afefc5a7cc89c213a
BLAKE2b-256 b3cfb46aa2cf8e7d93d370248e5e1c50adf349750af503e5910b8809b05b2f6b

See more details on using hashes here.

File details

Details for the file logop-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: logop-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 8.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.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 253cd307d53e471b686eb59b3835b331614e100b98a4708a27b469b778e00215
MD5 2615b58ae029963b85add20d9b292b98
BLAKE2b-256 cc25deae7e2f6eceb0b4a6b773c79f84589aac8e4e7bd6fc38a254fb0521f6b9

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