protected String getAuditLineString(final AuditActionContext auditActionContext) {
        val builder = new StringBuilder();

        if (!useSingleLine) {
            builder.append("Audit trail record BEGIN\n");
            builder.append("=============================================================\n");
        }

        val clientInfo = auditActionContext.getClientInfo();
        buildSingleAuditLineForField(AuditableFields.WHEN, auditActionContext.getWhenActionWasPerformed(), builder);
        buildSingleAuditLineForField(AuditableFields.WHO, auditActionContext.getPrincipal(), builder);
        buildSingleAuditLineForField(AuditableFields.WHAT, auditActionContext.getResourceOperatedUpon(), builder);
        buildSingleAuditLineForField(AuditableFields.ACTION, auditActionContext.getActionPerformed(), builder);
        buildSingleAuditLineForField(AuditableFields.APPLICATION, auditActionContext.getApplicationCode(), builder);
        buildSingleAuditLineForField(AuditableFields.USER_AGENT, clientInfo.getUserAgent(), builder);
        buildSingleAuditLineForField(AuditableFields.CLIENT_IP, clientInfo.getClientIpAddress(), builder);
        buildSingleAuditLineForField(AuditableFields.SERVER_IP, clientInfo.getServerIpAddress(), builder);
        buildSingleAuditLineForField(AuditableFields.DEVICE_FINGERPRINT, clientInfo.getDeviceFingerprint(), builder);
        buildSingleAuditLineForField(AuditableFields.HEADERS, clientInfo.getHeaders(), builder);
        buildSingleAuditLineForField(AuditableFields.TENANT, clientInfo.getTenant(), builder);

        if (!useSingleLine) {
            builder.append("=============================================================");
            builder.append("\n\n");
        }

        return builder.toString();
    }
Separator for single line log entries.
core/cas-server-core-audit-api/src/main/java/org/apereo/inspektr/audit/support/AbstractStringAuditTrailManager.java