用于轻松记录当前上下文信息的工具
项目描述
context_logging
描述
用于轻松记录当前上下文信息的工具。
from context_logging import current_context
logging.info('before context')
# 2019-07-25 19:49:43 INFO before context
with Context('my_context'):
current_context['var'] = 1
logging.info('in context')
# 2019-07-25 19:49:43 INFO in context {'var': 1}
# 2019-07-25 19:49:43 INFO 'my_context: executed in 00:00:01 {'var': 1}'
logging.info('after context')
# 2019-07-25 19:49:43 INFO after context
安装
pip install context_logging
用法
使用上下文设置记录
import logging
from context_logging import current_context, setup_log_record
logging.basicConfig(
format='%(asctime)s %(levelname)s %(name)s %(message)s %(context)s',
level=logging.INFO,
)
setup_log_record()
current_context['var'] = 1
logging.info('message')
# 2019-07-25 19:49:43,892 INFO root message {'var': 1}
作为上下文管理器
from context_logging import Context, current_context
with Context(var=1):
assert current_context['var'] == 1
assert 'var' not in current_context
允许任何上下文嵌套
with Context(var=1):
assert current_context == {'var': 1}
with Context(val=2, var=2):
assert current_context == {'val': 2, 'var': 2}
assert current_context == {'var': 1}
assert 'var' not in current_context
作为装饰器
@Context(var=1)
def f():
assert current_context['var'] == 1
f()
assert 'var' not in current_context
使用开始/结束 [已弃用]
ctx = Context(var=1)
assert 'var' not in current_context
ctx.start()
assert current_context['var'] == 1
ctx.finish()
assert 'var' not in current_context
向/从当前上下文添加/删除值
with Context():
assert 'var' not in current_context
current_context['var'] = 1
assert current_context['var'] == 1
显式上下文名称(否则将使用Python模块的路径)
with Context('my_context'):
pass
在退出上下文时记录执行时间(可以通过log_execution_time=False
参数禁用)
with Context('my_context'):
time.sleep(1)
# INFO 'my_context: executed in 00:00:01',
可以通过环境变量更改log_execution_time参数的默认值
export CONTEXT_LOGGING_LOG_EXECUTION_TIME_DEFAULT=0
上下文异常将填充当前上下文(可以通过fill_exception_context=False
参数禁用)
try:
with Context(var=1):
raise Exception(1)
except Exception as exc:
assert exc.args = (1, {'var': 1})
可以通过环境变量更改fill_exception_context参数的默认值
export CONTEXT_LOGGING_FILL_EXEPTIONS_DEFAULT=0
我们可以设置数据到根上下文,它永远不会关闭
from context_logging import root_context
root_context['env'] = 'test'
如果您想将上下文传递给其他线程,请使用ContextVarExecutor
from context_logging import ContextVarExecutor
with ContextVarExecutor() as executor:
executor.submit(...)
# OR
loop.set_default_executor(ContextVarExecutor()) # for asyncio loop
对于开发者
创建venv并安装依赖项
make init
安装git预提交钩子
make precommit_hook
运行linters,autoformat,测试等。
make pretty lint test
提升新版本
make bump_major
make bump_minor
make bump_patch
项目详情
关闭
context_logging-1.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 910cfdc843b52537608f01ba45ef0456da78a7b1a955f126cbe9153f99fe1530 |
|
MD5 | 415f3c09da0acb4dc7a44f61ba4d0675 |
|
BLAKE2b-256 | 154df931791b78a24108c07008aa4c90f1c455e8d86ffb28518454fe89acc596 |
关闭
context_logging-1.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 20b7df9038b7291af5a1e8e765bc418ea6d61b180b15d195fa546cdf51c6fefb |
|
MD5 | 0e6d40d9d225eaf96b3d9d2a06188acf |
|
BLAKE2b-256 | 767f73401166e730249d7bcc505b0cf5eccadc5b1708c6bb0dcf51304b9ea3b7 |