id = "goaccess" name = "GoAccess" homepage = "https://goaccess.io/" description = "Real-time web log analyzer and interactive viewer that runs in a terminal." executables = ["goaccess"] [dotfiles] # The official GoAccess man page names ~/.goaccessrc as the user configuration # file (with /etc/goaccess.conf as the system alternative). # https://goaccess.io/man paths = ["~/.goaccessrc"] secret = [] [commands] format = 1 label = "Analyze web logs" description = "Parse an access log and show it in the terminal, or write a JSON, CSV or HTML report. Panels, GeoIP, real-time WebSocket options and persistence are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true } [[commands.source]] id = "man" kind = "manual" url = "https://raw.githubusercontent.com/allinurl/goaccess/master/goaccess.1" revision = "master 2026-10-27" evidence = """ --time-format= --date-format= --log-format= -f --log-file= -o --output= -e --exclude-ip= -q --no-query-string -a --agent-list --ignore-crawlers --anonymize-ip --html-report-title= --real-time-html --no-color --no-progress --tz=<timezone> --process-and-exit """ [[commands.field]] id = "log_file" label = "Log file" description = "Access log to parse. Leave empty to read from standard input." type = "path" option = ["--log-file", "-f"] path = { kind = "file", role = "input" } sources = ["man"] [[commands.field]] id = "log_format" label = "Log format" description = "A predefined name such as COMBINED, or a custom format string." type = "string" option = ["--log-format"] suggestions = [{ value = "COMBINED", label = "Combined" }, { value = "COMMON", label = "Common" }, { value = "VCOMBINED", label = "Virtual host combined" }] sources = ["man"] [[commands.field]] id = "date_format" label = "Date format" type = "string" option = ["--date-format"] sources = ["man"] [[commands.field]] id = "time_format" label = "Time format" type = "string" option = ["--time-format"] sources = ["man"] [[commands.field]] id = "output" label = "Output file" description = "Report to write; the extension (.html, .json, .csv) picks the format." type = "path" option = ["--output", "-o"] path = { kind = "file", role = "output", must_exist = false } effect = "overwrite" sources = ["man"] [[commands.field]] id = "exclude_ip" label = "Exclude IP or range" type = "string" option = ["--exclude-ip", "-e"] multiple = true sources = ["man"] [[commands.field]] id = "ignore_crawlers" label = "Ignore crawlers" type = "boolean" option = ["--ignore-crawlers"] sources = ["man"] [[commands.field]] id = "no_query_string" label = "Strip query strings" type = "boolean" option = ["--no-query-string", "-q"] sources = ["man"] [[commands.field]] id = "anonymize_ip" label = "Anonymize IPs" type = "boolean" option = ["--anonymize-ip"] sources = ["man"] [[commands.field]] id = "report_title" label = "HTML report title" type = "string" option = ["--html-report-title"] sources = ["man"] [[commands.field]] id = "real_time_html" label = "Real-time HTML" description = "Serve the HTML report live over WebSocket." type = "boolean" option = ["--real-time-html"] sources = ["man"] [[commands.field]] id = "tz" label = "Timezone" type = "string" option = ["--tz"] sources = ["man"] [[commands.task]] id = "terminal" label = "Browse in terminal" set = { log_format = ["COMBINED"] } fields = ["log_file", "log_format", "exclude_ip", "ignore_crawlers", "no_query_string"] required = ["log_file"] [[commands.task]] id = "html-report" label = "HTML report" set = { log_format = ["COMBINED"] } fields = ["log_file", "log_format", "output", "report_title", "ignore_crawlers", "anonymize_ip", "real_time_html"] required = ["log_file", "output"] [[commands.group]] id = "basic" label = "Basic" fields = ["log_file", "log_format", "output", "ignore_crawlers", "no_query_string"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["date_format", "time_format", "exclude_ip", "anonymize_ip", "report_title", "real_time_html", "tz"]