在我的 Python 程序中,我有以下代码:
def main():
# The file's path
path = os.path.dirname(os.path.realpath(__file__))
...
# Config file relative to this file
loggingConf = open('{0}/configs/logging.yml'.format(path), 'r')
logging.config.dictConfig(yaml.load(loggingConf))
loggingConf.close()
logger = logging.getLogger(LOGGER)
...
这是我的 logging.yml 配置文件:
version: 1
formatters:
default:
format: '%(asctime)s %(levelname)s %(name)s %(message)s'
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: default
stream: ext://sys.stdout
file:
class : logging.FileHandler
formatter: default
filename: bot.log
loggers:
cloaked_chatter:
level: DEBUG
handlers: [console, file]
propagate: no
问题是 bot.log 文件是在程序启动的地方创建的。我希望它始终在项目的文件夹中创建,即在与我的 Python 程序相同的文件夹中。
例如,启动程序./bot.py
会在同一文件夹中创建日志文件。但是启动它python3 path/bot.py
会在文件层次结构中创建比 Python 程序高一级的日志文件。
我应该如何在配置文件中写入文件名来解决这个问题?还是我需要编写一个自定义处理程序?如果是这样,怎么做?或者这不能使用 dictConfig 解决吗?