Как перехватить мимолетный вывод на консоль Базеля - PullRequest
0 голосов
/ 01 ноября 2019

Во время сборки Bazel пролетает куча текста, который временно отображается, а затем удаляется с экрана. Это происходит по всей сборке. Я попробовал несколько методов перенаправления с перенаправлением stderr на стандартный вывод, но безрезультатно. Я также экспериментировал с подробными флагами Базеля.

Вопрос : есть ли способ перехватить эту мимолетную консольную информацию, генерируемую базелем? Я хотел бы, по крайней мере, изучить, какая информация представляется перед ее изъятием, в большей степени в качестве учебного упражнения и для ознакомления.

Ответы [ 3 ]

2 голосов
/ 05 ноября 2019
bazel build //... &> log.txt

&> делает работу

2 голосов
/ 01 ноября 2019

Эти параметры позволят вам развернуть все сообщения журнала, созданные действиями / задачами, и перенаправить их в файл.

# .bazelrc
common --color=no
common --curses=yes

build --show_progress_rate_limit=0
build --show_task_finish
build --show_timestamps
build --worker_verbose

Установка color=no и show_progress_rate_limit=0 приводит к тому, что сообщения о ходе выполнения будут расширен (и сохранен) в терминале. curses=yes влияет на перенаправление (по крайней мере, на моей машине). Другие флаги просто добавляют дополнительную информацию в журнал.

Пример вывода (bash, bazel 1.0.0)

$> bazel build :my_project >& /tmp/bazel_build.log
$> cat /tmp/bazel_build.log

(11:22:46) INFO: Writing tracer profile to '.../command.profile.gz'
(11:22:46) INFO: Current date is 2019-11-01
(11:22:46) Loading: loading...
(11:22:46) Loading: 
(11:22:46) Loading: 0 packages loaded
(11:22:46) Loading: 0 packages loaded
    Fetching @bazel_tools; fetching

(11:22:46) Loading: 0 packages loaded
    Fetching @bazel_tools; fetching

(11:22:46) Loading: 0 packages loaded
    currently loading: path/to/my/project

(11:22:46) Analyzing: target //path/to/my/project:my_project (1 packages l\
oaded)

[...]

(11:22:46) INFO: Analyzed target //path/to/my/project:my_project (14 packages loaded, 670 targets configured).
(11:22:46) 
(11:22:46) INFO: Found 1 target...
(11:22:46) 
(11:22:46) [0 / 1] [Prepa] BazelWorkspaceStatusAction stable-status.txt
(11:22:46) [1 / 13] [Prepa] //path/to/my/project:my_project
(11:22:46) [5 / 12] 3 actions, 0 running
    [Prepa] @deps//:my_dependency

(11:22:46) [10 / 12] [Scann] Compiling path/to/my/project/main.cc
(11:22:46) [10 / 12] [Prepa] Compiling path/to/my/project/main.cc
(11:22:46) [10 / 12] .../project:my_project; 0s processwrapper-sandbox

(11:22:46) [11 / 12] [Prepa] Linking path/to/my/project/my_project
Target //path/to/my/project:my_project up-to-date:
(11:22:46) [12 / 12] checking cached actions
  bazel-bin/path/to/my/project/my_project
(11:22:46) [12 / 12] checking cached actions
(11:22:46) INFO: Elapsed time: 0.493s, Critical Path: 0.29s
(11:22:46) [12 / 12] checking cached actions
(11:22:46) INFO: 2 processes: 2 processwrapper-sandbox.
(11:22:46) [12 / 12] checking cached actions
(11:22:46) INFO: Build completed successfully, 12 total actions
(11:22:46) INFO: Build completed successfully, 12 total actions

Надеюсь, это поможет.

1 голос
/ 01 ноября 2019

Помимо превосходных предложений @ dms, флаг --subcommands может использоваться для сохранения точной командной строки, которую Bazel вызывает для каждого выполнения действия.

...