Fix log_line_prefix to display the transaction id (%x) for statements not in a transaction block Currently it displays zero.
Check that the XID has been assigned at the location where the statement log is now printed. If not, no statement log is output. And then before finish_xact_command. If the statement has not been output to the log. Here the log can get XID.
DML that does not manipulate any data still does not get XID.
 LOG: statement: insert into t1 values(1,0,'');  LOG: statement: delete from t1;  LOG: statement: delete from t1;