Code review comment: 1. Could you name it `StartTime`? 2. Is it a datetime or a timestamp value?

Code under review:
public void exec(AuditEvent event) {
        try {
            StringBuilder sb = new StringBuilder();
            long queryTime = 0;
            
            
            Field[] fields = event.getClass().getFields();
            for (Field f : fields) {
                AuditField af = f.getAnnotation(AuditField.class);
                if (af == null) {
                    continue;
                }

                
                
                if (af.value().equals("BigQueryLogCPUSecondThreshold") ||
                        af.value().equals("BigQueryLogScanBytesThreshold") ||
                        af.value().equals("BigQueryLogScanRowsThreshold")) {
                    continue;
                }

                if (af.value().equals("Time")) {
                    queryTime = (long) f.get(event);
                }

                
                Object value = f.get(event);
                if (af.ignore_zero() && value == null) {
                    continue;
                }
                if (value instanceof Long) {
                    long longValue = (Long) value;
                    if (longValue == -1 || (longValue == 0 && af.ignore_zero())) {
                        continue;
                    }
                }
                if (value instanceof Integer) {
                    int intValue = (Integer) value;
                    if (intValue == -1 || (intValue == 0 && af.ignore_zero())) {
                        continue;
                    }
                }
                if (value instanceof Double) {
                    double doubleValue = (Double) value;
                    if (doubleValue == -1 || (doubleValue == 0 && af.ignore_zero())) {
                        continue;
                    }
                }
                sb.append("|").append(af.value()).append("=").append(value);
            }

            String auditLog = sb.toString();
            if (event.type == EventType.CONNECTION) {
                AuditLog.getConnectionAudit().log(auditLog);
            } else {
                AuditLog.getQueryAudit().log(auditLog);
                
                if (queryTime > Config.qe_slow_log_ms) {
                    AuditLog.getSlowAudit().log(auditLog);
                }

                if (isBigQuery(event)) {
                    sb.append("|bigQueryLogCPUSecondThreshold=").append(event.bigQueryLogCPUSecondThreshold);
                    sb.append("|bigQueryLogScanBytesThreshold=").append(event.bigQueryLogScanBytesThreshold);
                    sb.append("|bigQueryLogScanRowsThreshold=").append(event.bigQueryLogScanRowsThreshold);
                    String bigQueryLog = sb.toString();
                    AuditLog.getBigQueryAudit().log(bigQueryLog);
                }
            }
        } catch (Exception e) {
            LOG.warn("failed to process audit event", e);
        }
    }


Revised code:
public void exec(AuditEvent event) {
        try {
            StringBuilder sb = new StringBuilder();
            long queryTime = 0;
            
            
            Field[] fields = event.getClass().getFields();
            for (Field f : fields) {
                AuditField af = f.getAnnotation(AuditField.class);
                if (af == null) {
                    continue;
                }

                
                
                if (af.value().equals("BigQueryLogCPUSecondThreshold") ||
                        af.value().equals("BigQueryLogScanBytesThreshold") ||
                        af.value().equals("BigQueryLogScanRowsThreshold")) {
                    continue;
                }

                if (af.value().equals("Time")) {
                    queryTime = (long) f.get(event);
                }

                
                Object value = f.get(event);
                if (af.ignore_zero() && value == null) {
                    continue;
                }
                if (value instanceof Long) {
                    long longValue = (Long) value;
                    if (longValue == -1 || (longValue == 0 && af.ignore_zero())) {
                        continue;
                    }
                }
                if (value instanceof Integer) {
                    int intValue = (Integer) value;
                    if (intValue == -1 || (intValue == 0 && af.ignore_zero())) {
                        continue;
                    }
                }
                if (value instanceof Double) {
                    double doubleValue = (Double) value;
                    if (doubleValue == -1 || (doubleValue == 0 && af.ignore_zero())) {
                        continue;
                    }
                }
                sb.append("|").append(af.value()).append("=").append(value);
            }

            String auditLog = sb.toString();
            if (event.type == EventType.CONNECTION) {
                AuditLog.getConnectionAudit().log(auditLog);
            } else {
                AuditLog.getQueryAudit().log(auditLog);
                
                if (queryTime > Config.qe_slow_log_ms) {
                    AuditLog.getSlowAudit().log(auditLog);
                }

                if (isBigQuery(event)) {
                    sb.append("|bigQueryLogCPUSecondThreshold=").append(event.bigQueryLogCPUSecondThreshold);
                    sb.append("|bigQueryLogScanBytesThreshold=").append(event.bigQueryLogScanBytesThreshold);
                    sb.append("|bigQueryLogScanRowsThreshold=").append(event.bigQueryLogScanRowsThreshold);
                    String bigQueryLog = sb.toString();
                    AuditLog.getBigQueryAudit().log(bigQueryLog);
                }
            }
        } catch (Exception e) {
            LOG.warn("failed to process audit event", e);
        }
    }