Bazel中--experimental_execution_log_file生成空日志文件求助
你遇到的是Bazel实验性执行日志文件创建后无内容的问题,以下是几个实际可行的排查方向和解决方法:
确认是否有非缓存的执行任务
该日志仅记录实际执行的任务,若所有任务都从Bazel缓存命中,日志就会是空的。可以通过添加--nocache或--nocache_test_results参数强制任务重新执行,比如:bazel build //your/target --nocache --experimental_execution_log_file=test.log执行后查看日志是否有内容。
验证参数是否生效
检查workspace.bazelrc的配置是否被正确加载,运行以下命令查看当前生效的所有配置:bazel build //your/target --show_config在输出中查找
experimental_execution_log_file和noexecution_log_sort,确认它们存在且路径正确。如果没找到,可能是bazelrc的路径或格式有问题,尝试将配置移到根目录的.bazelrc文件中再测试。检查Bazel版本兼容性
--experimental_execution_log_file是实验性参数,不同Bazel版本的行为可能有差异。如果使用的是较旧版本,尝试升级到稳定版(比如6.x系列);如果是新版本,确认该参数没有被废弃或替换(可通过bazel build --help查看参数是否存在)。排除参数冲突
确保没有其他日志相关参数干扰执行日志的生成,比如--execution_log_level如果设置过高(如只记录错误),可能会导致日志无内容。可以暂时移除其他日志配置,仅保留这两个实验性参数测试。直接在命令行指定参数测试
绕过bazelrc配置,直接在命令行添加参数执行构建,排除配置加载问题:bazel build //your/target --experimental_execution_log_file=direct_test.log --noexecution_log_sort若此时日志有内容,说明是bazelrc的配置加载问题,检查文件路径、语法是否正确(比如bazel/rc/workspace.bazelrc是否被Bazel识别,通常默认加载的是根目录的
.bazelrc,需要通过--bazelrc=bazel/rc/workspace.bazelrc指定加载路径)。
内容的提问来源于stack exchange,提问作者Glen Buhlmann

