public function log()
    {
        $this->debug->groupCollapsed(__METHOD__);
        $this->columns = array(
            array('key' => 'Date', 'value' => \date('F j, Y')),
            array('key' => 'Time', 'value' => \date('g:ia')),
            array('key' => 'IP Address', 'value' => $_SERVER['REMOTE_ADDR']),
        );
        $typesSkip = array('button','image','reset','submit');
        $pages = $this->logGetAllPages();
        foreach (\array_keys($pages) as $i) {
            $this->setCurrentFields($i);
            foreach ($this->form->currentFields as $field) {
                $props = $field->props;
                $type = $props['attribs']['type'];
                $name = $props['attribs']['name'];
                if (\in_array($type, $typesSkip)) {
                    continue;           // not interested in these types o fields
                }
                $label = (\is_int($name) && !empty($props['label']))
                    ? $props['label']
                    : \ucwords(\strtr($name, '_', ' '));
                $value = $field->val();
                // do not use $field['return_array']... we're wanting a column for every possible value
                if (\in_array($type, array('checkbox','select','radio'))) {
                    if (\is_string($value)) {
                        $value = array($value);
                    }
                    foreach ($props['options'] as $opt) {
                        $this->logAddColumn($opt['value'], \in_array($opt['value'], $value) ? 1 : '');
                    }
                } else {
                    $value = \strtr($value, array("\n"=>' ',"\r"=>''));
                    $this->logAddColumn($label, $value);
                }
            }
        }
        $return = $this->logWriteFile();
        return $return;
    }