Skip to content

VCOMBINED and VCOMMON formats are not ideal #2973

Description

@delan
$ goaccess --version | head -1
GoAccess - 1.10.2.

VCOMBINED and VCOMMON formats both start with %v:%^ . this has two problems:

  • they require a port number, so VCOMMON is incompatible with Apache’s suggested format for logging with virtual hosts (see config below, and see also this blog post). for example:

    <VirtualHost *:80>
        ServerName test
        CustomLog /var/log/httpd/goaccess.log "%v %h %l %u %t \"%r\" %>s %b"
    </VirtualHost>
    

    $ echo 'test ::1 - - [25/Jul/2026:17:38:53 +0800] "GET / HTTP/1.1" 200 0' | goaccess -o out.html --log-format=VCOMMON

    ==645333== GoAccess - version 1.10.2 - Jan  1 1980 00:00:00
    ==645333== Config file: /nix/store/8k8lgz82gjbdfmb6sal1rj6666h95ggv-goaccess-1.10.2/etc/goaccess/goaccess.conf
    ==645333== https://goaccess.io - <[email protected]>
    ==645333== Released under the MIT License.
    ==645333==
    ==645333== FILE: -
    ==645333== Parsed 1 lines producing the following errors:
    ==645333==
    ==645333== Token '-' doesn't match specifier '%h'
    ==645333==
    ==645333== Format Errors - Verify your log/date/time format
    ==645333== Use --invalid-requests option to store such lines in a file.
    
  • they seem to move from %v to %^ after the first colon, which will parse the virtual host incorrectly if it contains an IPv6 address. this can happen in nginx with $host. for example:

    $ echo '[2001:db8::1]:80 2001:db8::2 - - [25/Jul/2026:16:29:40 +0800] "GET / HTTP/1.1" 200 0 "-" "curl/8.20.0"' | goaccess -o out.html --log-format=VCOMBINED

    Image

to me, it would make sense if VCOMBINED and VCOMMON started with %v , and we just included the port number (if any) in the virtual host. that would also play nicer with nginx’s new $is_request_port and $request_port variables.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions