测井增强。
oh-my-logging的Python项目详细描述
哦,我的日志
日志模块的扩展。
安装
pip install oh_my_logging
用法
装饰工
记录器
注入logger对象作为最后一个参数。
from oh_my_logging.decorators import logger
@logger
def myprint(message, logger):
logger.debug(message)
logger.info(message)
logger.warn(message)
logger.error(message)
myprint('hello')
对数参数
函数的日志参数。
from oh_my_logging.decorators import log_args
@log_args
def sum(a, b):
return a + b
sum(1,2) # echo 'params: a=1, b=2'
日志返回
函数的日志重新调整值。
from oh_my_logging.decorators import log_returnings
@log_returnings
def sum(a, b):
return a + b
sum(1,2) # echo 'returning: 1'
对数统计
计算特定函数的执行时间开销。
from oh_my_logging.decorators import log_stat
@log_stat
def sum(a, b):
return a + b
sum(1,2) # echo statistic: 1.2ms'
日志错误
记录异常信息然后再次引发异常,或者捕获然后忽略特定异常。
from oh_my_logging.decorators import log_error
# Log then raise exception again.
@log_error
def myfile(name):
raise FileNotFoundException(name)
myfile('123')
# Log then catch then ignore FileNotFoundException.
@log_error(ignore_errors=(FileNotFoundException,))
def myfile2(name):
raise FileNotFoundException(name)
myfile2('123')
对数
超级装饰,包含了以上所有装饰的功能。如果要记录两个或更多信息,请使用建议的此装饰器。
from oh_my_logging.decorators import log
@log(log.ARGS,
log.RETURNING,
log.STAT,
{'target': log.ERROR,
'ignore_errors': (FileNotFoundException,)})
def myfile(name):
raise FileNotFoundException(name)
myfile('123')
日志记录配置
默认配置
存储在$PWD/logging.ini
中的默认日志记录配置。
json/yaml配置
from oh_my_logging.builders import LoggerBuilderFactory
# JSON
LoggerBuilderFactory('/path/to/logging.js')
LoggerBuilderFactory.unsafe_clear()
LoggerBuilderFactory('/path/to/logging.json')
# YAML
LoggerBuilderFactory.unsafe_clear()
LoggerBuilderFactory('/path/to/logging.yml)
LoggerBuilderFactory.unsafe_clear()
LoggerBuilderFactory('/path/to/logging.yaml)
dict配置
from oh_my_logging.builders import LoggerBuilderFactory
dictConfig = {
'version': 1,
'root': {
'level': 'DEBUG',
'handlers': ['memory'],
},
'handlers': {
'memory': {
'class': 'oh_my_logging.handlers.MemoryHandler',
'formatter': 'default',
},
},
'formatters': {
'default': {
'format': '%(message)s',
},
},
}
LoggerBuilderFactory(dictConfig)