logging 二次封装 __filename__ 不正确
时间: 2023-07-31 11:04:07 浏览: 93
好的,我理解了你的问题。你的意思是你进行了 logging 的二次封装,但是在使用 __filename__ 时发现输出的文件名不正确,对吗?
如果是这样,可能是因为 __filename__ 的值是在模块被解析时确定的,而不是在运行时确定的。所以,如果你的二次封装是在一个模块中定义的,那么 __filename__ 的值将会是该模块的文件名,而不是你想要的被日志记录的文件名。
解决这个问题的方法是,你可以在调用 logging 函数时,手动传递一个文件名参数,作为日志记录的文件名,而不是使用 __filename__。例如:
```
const log = (message, fileName) => {
console.log(`${new Date().toISOString()} [${fileName}] ${message}`);
}
log('Hello, world!', 'app.js');
```
这样,你就可以在调用 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 函数时,指定要记录日志的文件名了。
希望这能帮助到你!
阅读全文