@@ -144,11 +144,22 @@ static void fpm_stdio_child_said(struct fpm_event_s *ev, short which, void *arg)
144144 zlog_stream_init_ex (log_stream , ZLOG_WARNING , STDERR_FILENO );
145145 zlog_stream_set_decorating (log_stream , child -> wp -> config -> decorate_workers_output );
146146 zlog_stream_set_wrapping (log_stream , ZLOG_TRUE );
147- zlog_stream_set_msg_prefix (log_stream , "[pool %s] child %d said into %s: " ,
147+ zlog_stream_set_msg_prefix (log_stream , STREAM_SET_MSG_PREFIX_FMT ,
148148 child -> wp -> config -> name , (int ) child -> pid , is_stdout ? "stdout" : "stderr" );
149149 zlog_stream_set_msg_quoting (log_stream , ZLOG_TRUE );
150+ zlog_stream_set_is_stdout (log_stream , is_stdout );
151+ zlog_stream_set_child_pid (log_stream , (int )child -> pid );
150152 } else {
151153 log_stream = child -> log_stream ;
154+ // if fd type (stdout/stderr) or child's pid is changed,
155+ // then the stream will be finished and msg's prefix will be reinitialized
156+ if (log_stream -> is_stdout != (unsigned int )is_stdout || log_stream -> child_pid != (int )child -> pid ) {
157+ zlog_stream_finish (log_stream );
158+ zlog_stream_set_msg_prefix (log_stream , STREAM_SET_MSG_PREFIX_FMT ,
159+ child -> wp -> config -> name , (int ) child -> pid , is_stdout ? "stdout" : "stderr" );
160+ zlog_stream_set_is_stdout (log_stream , is_stdout );
161+ zlog_stream_set_child_pid (log_stream , (int )child -> pid );
162+ }
152163 }
153164
154165 while (fifo_in || fifo_out ) {
0 commit comments