| 110 | |
| 111 | |
| 112 | class ExecutionLoggingService: |
| 113 | def __init__(self, output_folder, log_name_creator, authorizer): |
| 114 | self._output_folder = output_folder |
| 115 | self._log_name_creator = log_name_creator |
| 116 | self._authorizer = authorizer |
| 117 | |
| 118 | self._visited_files = set() |
| 119 | self._ids_to_file_map = {} |
| 120 | self._output_loggers = {} |
| 121 | |
| 122 | file_utils.prepare_folder(output_folder) |
| 123 | |
| 124 | self._renew_files_cache() |
| 125 | |
| 126 | def start_logging(self, execution_id, |
| 127 | user_name, |
| 128 | user_id, |
| 129 | command, |
| 130 | output_stream, |
| 131 | all_audit_names, |
| 132 | script_config, |
| 133 | parameter_value_wrappers, |
| 134 | start_time_millis=None): |
| 135 | |
| 136 | script_name = str(script_config.name) |
| 137 | |
| 138 | if start_time_millis is None: |
| 139 | start_time_millis = get_current_millis() |
| 140 | |
| 141 | log_filename = self._log_name_creator.create_filename( |
| 142 | execution_id, |
| 143 | all_audit_names, |
| 144 | script_name, |
| 145 | start_time_millis, |
| 146 | script_config.logging_config, |
| 147 | script_config.parameters, |
| 148 | parameter_value_wrappers) |
| 149 | log_file_path = os.path.join(self._output_folder, log_filename) |
| 150 | log_file_path = file_utils.create_unique_filename(log_file_path) |
| 151 | |
| 152 | output_logger = ScriptOutputLogger(log_file_path, output_stream) |
| 153 | output_logger.write_line('id:' + execution_id) |
| 154 | output_logger.write_line('user_name:' + user_name) |
| 155 | output_logger.write_line('user_id:' + user_id) |
| 156 | output_logger.write_line('script:' + script_name) |
| 157 | output_logger.write_line('start_time:' + str(start_time_millis)) |
| 158 | output_logger.write_line('command:' + command) |
| 159 | output_logger.write_line('output_format:' + script_config.output_format) |
| 160 | output_logger.write_line(OUTPUT_STARTED_MARKER) |
| 161 | output_logger.start() |
| 162 | |
| 163 | log_filename = os.path.basename(log_file_path) |
| 164 | self._visited_files.add(log_filename) |
| 165 | self._ids_to_file_map[execution_id] = log_filename |
| 166 | self._output_loggers[execution_id] = output_logger |
| 167 | |
| 168 | def write_post_execution_info(self, execution_id, exit_code): |
| 169 | filename = self._ids_to_file_map.get(execution_id) |
no outgoing calls