python logging二次封装
时间: 2023-04-14 20:04:50 浏览: 189
Python logging 的二次封装是对 Python 的 logging 模块进行的一次包装,以提供更方便、更简单的使用方法。这种封装通常会对 logging 模块的默认配置进行修改,并对 logging 模块的接口进行重新设计,以使得日志记录更加容易。它可以帮助我们简化代码,减少代码量,并保证日志的一致性。
相关问题
python logging 二次封装 filename 不正确
好的,我理解了你的问题。你的意思是你进行了 logging 的二次封装,但是在使用 `filename` 时发现输出的文件名不正确,对吗?
如果是这样,可能是因为 `filename` 参数的默认值是 `__file__`,在被解释器执行时就已经确定,而不是在运行时确定的。所以,如果你的二次封装是在一个模块中定义的,那么 `filename` 参数的值将会是该模块的文件名,而不是你想要的被日志记录的文件名。
解决这个问题的方法是,你可以在调用 logging 函数时,手动传递一个文件名参数,作为日志记录的文件名,而不是使用默认的 `filename` 参数。例如:
```python
import logging
def custom_logger(filename):
logger = logging.getLogger(filename)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler = logging.FileHandler(filename + '.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
return logger
logger = custom_logger('my_module')
logger.debug('This is a debug message')
```
这样,你就可以在调用 logging 函数时,指定要记录日志的文件名了。
希望这能帮助到你!
在python中logging二次封装 Formatter里的filename 不正确
好的,我理解了你的问题。你的意思是你在进行 logging 的二次封装时,发现在 Formatter 中设置的 `filename` 参数输出的文件名不正确,对吗?
如果是这样,可能是因为在 Formatter 中设置的 `filename` 参数也是默认使用 `__file__` 获得的当前模块的文件名,而不是你想要的被日志记录的文件名。
解决这个问题的方法是,你可以在自定义的 logging 函数中,手动添加一个 `filename` 参数,并将其传递给 Formatter,而不是使用默认值。例如:
```python
import logging
def custom_logger(filename):
logger = logging.getLogger(filename)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s', '%Y-%m-%d %H:%M:%S')
file_handler = logging.FileHandler(filename + '.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
return logger
logger = custom_logger('my_module')
logger.debug('This is a debug message')
```
在上面的代码中,我们在自定义的 logging 函数中添加了一个 `filename` 参数,并将其传递给 Formatter。Formatter 使用了 `% (asctime) s` 来添加记录时间,`%(name)s` 来添加 logger 名称,`%(levelname)s` 来添加日志级别,`%(message)s` 来添加日志消息。`%Y-%m-%d %H:%M:%S` 用于设置记录时间的格式。
这样,你就可以在调用 logging 函数时,指定要记录日志的文件名了。
希望这能帮助到你!
阅读全文