我的项目目录结构如下。当我从package 1
运行脚本时,它会在logs
目录中创建日志,但是当我从测试运行时它无法提交。
/project
__init__.py
/flask_app
__init__.py
/scripts
__init__.py
logging.config.py
/package1
__init__.py
mypython.py
/logs
logging.log
/tests
__init__.py
test_mypython.py
mypython.py
代码:
self.logger = configure_logger('log_handler','../logs/logging.py')
当我通过发出命令
从测试运行mypython.py时 py.test
我得到的回应是
[Errno 2] No such file or directory:
/home/mac/project/flask_app/logs/logging.log
当它试图从测试目录中找到路径时,这显然是错误的
到目前为止,我已尝试使用
(mypython.py)log_file = pkg_resource.resource_filename(__name__, '../logs/logging.log')
self.logger = configure_logger('log_handler',log_file)
我也试过
package_dir = os.path.dirname(os.path.abspath(__file__))
log_file=os.path.join(os.path.dirname(__file__),'../logs/logging.log')
它们似乎都不起作用。如果我将目录更改为mypackage1然后运行py.test
,那么一切正常。我不希望这样,因为我在测试目录中有其他单元测试。我现在很沮丧。感谢是否有人可以指出我的代码有什么问题。我认为包资源应该解决。显然它没有。提前致谢
答案 0 :(得分:1)
使用与模块相关的路径配置日志记录(no到当前目录):
self.logger = configure_logger('log_handler', os.path.dirname(__file__) + '/../logs/logging.py')
在使用相对路径配置日志记录之前或创建logs
目录:
try:
os.mkdir('../logs')
except OSError: # Exists
pass
self.logger = configure_logger('log_handler','../logs/logging.py')