@@ -98,6 +98,8 @@ def _execute_internal(
9898 arguments ,
9999 environment = {},
100100 logger = None ,
101+ log_stdout = True ,
102+ log_stderr = True ,
101103 ** kwargs ):
102104 """Execute a subprocess with debugging instrumentation.
103105
@@ -116,6 +118,10 @@ def _execute_internal(
116118 logger: optional `Logger` to use for logging execution details. Must be
117119 specified when using module_ctx. If not specified, a default will
118120 be created.
121+ log_stdout: If True (the default), write stdout to the logged message. Setting
122+ to False can be useful for large stdout messages or for secrets.
123+ log_stderr: If True (the default), write stderr to the logged message. Setting
124+ to False can be useful for large stderr messages or for secrets.
119125 **kwargs: additional kwargs to pass onto rctx.execute
120126
121127 Returns:
@@ -160,7 +166,7 @@ def _execute_internal(
160166 cwd = _cwd_to_str (mrctx , kwargs ),
161167 timeout = _timeout_to_str (kwargs ),
162168 env_str = _env_to_str (environment ),
163- output = _outputs_to_str (result ),
169+ output = _outputs_to_str (result , log_stdout = log_stdout , log_stderr = log_stderr ),
164170 ))
165171 elif _is_repo_debug_enabled (mrctx ):
166172 logger .debug ((
@@ -171,7 +177,7 @@ def _execute_internal(
171177 op = op ,
172178 status = "success" if result .return_code == 0 else "failure" ,
173179 return_code = result .return_code ,
174- output = _outputs_to_str (result ),
180+ output = _outputs_to_str (result , log_stdout = log_stdout , log_stderr = log_stderr ),
175181 ))
176182
177183 result_kwargs = {k : getattr (result , k ) for k in dir (result )}
@@ -183,6 +189,8 @@ def _execute_internal(
183189 mrctx = mrctx ,
184190 kwargs = kwargs ,
185191 environment = environment ,
192+ log_stdout = log_stdout ,
193+ log_stderr = log_stderr ,
186194 ),
187195 ** result_kwargs
188196 )
@@ -220,7 +228,16 @@ def _execute_checked_stdout(*args, **kwargs):
220228 """Calls execute_checked, but only returns the stdout value."""
221229 return _execute_checked (* args , ** kwargs ).stdout
222230
223- def _execute_describe_failure (* , op , arguments , result , mrctx , kwargs , environment ):
231+ def _execute_describe_failure (
232+ * ,
233+ op ,
234+ arguments ,
235+ result ,
236+ mrctx ,
237+ kwargs ,
238+ environment ,
239+ log_stdout = True ,
240+ log_stderr = True ):
224241 return (
225242 "repo.execute: {op}: failure:\n " +
226243 " command: {cmd}\n " +
@@ -236,7 +253,7 @@ def _execute_describe_failure(*, op, arguments, result, mrctx, kwargs, environme
236253 cwd = _cwd_to_str (mrctx , kwargs ),
237254 timeout = _timeout_to_str (kwargs ),
238255 env_str = _env_to_str (environment ),
239- output = _outputs_to_str (result ),
256+ output = _outputs_to_str (result , log_stdout = log_stdout , log_stderr = log_stderr ),
240257 )
241258
242259def _which_checked (mrctx , binary_name ):
@@ -331,11 +348,11 @@ def _env_to_str(environment):
331348def _timeout_to_str (kwargs ):
332349 return kwargs .get ("timeout" , "<default timeout>" )
333350
334- def _outputs_to_str (result ):
351+ def _outputs_to_str (result , log_stdout = True , log_stderr = True ):
335352 lines = []
336353 items = [
337- ("stdout" , result .stdout ),
338- ("stderr" , result .stderr ),
354+ ("stdout" , result .stdout if log_stdout else "<log_stdout = False; skipping>" ),
355+ ("stderr" , result .stderr if log_stderr else "<log_stderr = False; skipping>" ),
339356 ]
340357 for name , content in items :
341358 if content :
0 commit comments