logging.Formatter('%(filename)s')错了
时间: 2024-01-01 09:06:06 浏览: 121
Python模块学习logging.docx
是的,你说得对。`logging.Formatter('%(filename)s')`这样的格式化字符串是错误的,因为它会将日志记录的文件名设置为 Formatter 类实例化时所在的文件名,而不是你想要记录的日志信息的文件名。
如果你想在日志消息中包含文件名,你可以使用`%(pathname)s`或者`%(module)s`代替`%(filename)s`,这两个 formatter 分别表示完整路径名和模块名。例如:
```python
import logging
def custom_logger(filename):
logger = logging.getLogger(filename)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(pathname)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')
```
在上面的代码中,我们使用了`%(pathname)s`来添加完整路径名,这样我们就可以在日志消息中包含文件名了。
希望这能帮助到你!
阅读全文