{"id":21683415,"url":"https://github.com/stonestepsinc/stonestepswebalizer","last_synced_at":"2025-04-12T07:50:46.131Z","repository":{"id":40553476,"uuid":"301028739","full_name":"StoneStepsInc/StoneStepsWebalizer","owner":"StoneStepsInc","description":"Stone Steps Webalizer is a fast command line application for web server and web proxy log file analysis. It supports multiple log formats and produces highly customizable HTML reports in many languages.","archived":false,"fork":false,"pushed_at":"2024-02-21T03:14:31.000Z","size":33421,"stargazers_count":19,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-26T03:03:23.430Z","etag":null,"topics":["analysis","apache-log","clf-log","iis-log","linux","log","nginx","nginx-log","squid-log","w3c-log","web-log-analysis","webalizer","windows"],"latest_commit_sha":null,"homepage":"http://www.stonesteps.ca/projects/webalizer","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StoneStepsInc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-04T03:01:53.000Z","updated_at":"2025-01-20T09:57:46.000Z","dependencies_parsed_at":"2024-11-25T16:11:58.421Z","dependency_job_id":"394ed114-1a18-4a4b-8aaa-94ff5d8ad67c","html_url":"https://github.com/StoneStepsInc/StoneStepsWebalizer","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StoneStepsInc%2FStoneStepsWebalizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StoneStepsInc%2FStoneStepsWebalizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StoneStepsInc%2FStoneStepsWebalizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StoneStepsInc%2FStoneStepsWebalizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StoneStepsInc","download_url":"https://codeload.github.com/StoneStepsInc/StoneStepsWebalizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248537003,"owners_count":21120688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analysis","apache-log","clf-log","iis-log","linux","log","nginx","nginx-log","squid-log","w3c-log","web-log-analysis","webalizer","windows"],"created_at":"2024-11-25T16:11:50.331Z","updated_at":"2025-04-12T07:50:46.108Z","avatar_url":"https://github.com/StoneStepsInc.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"**************************************************************************\nStone Steps Webalizer (v6.4.0)\n\nCopyright (c) 2004-2022, Stone Steps Inc. (www.stonesteps.ca)\n\nThe version of The Webalizer provided with this distribution is a fork\nbased on the version 2.01-10 of the original Webalizer:\n\nThe Webalizer - A web server log file analysis tool\nCopyright 1997-2000 by Bradford L. Barrett (brad@mrunix.net)\n\nDistributed under the GNU GPL.  See the files \"COPYING\" and\n\"Copyright\" supplied with the distribution for additional info.\n\n**************************************************************************\n\n## What is The Webalizer?\n\nThe Webalizer is a web server log file analysis program which produces\nusage statistics in HTML format for viewing with a browser.  The results\nare presented in both columnar and graphical format, which facilitates\ninterpretation.  Yearly, monthly, daily and hourly usage statistics are\npresented, along with the ability to display usage by host, URL, referrer,\nuser agent (browser), search string, entry/exit page, username and country\n(some information is only available if supported and present in the log\nfiles being processed).  Processed data may also be exported into most\ndatabase and spreadsheet programs that support tab delimited data formats.\n\nThe Webalizer supports W3C, IIS, Nginx, Apache, Squid, Common Log Format,\nas well as Combined Log Format. The latter two are referred to as CLF in\nthis document and the difference between them is handled trasparently\nwhen log files are being processed.\n\nGzip compressed logs may be used as input directly. Any log filename\nthat ends with a `.gz` extension will be assumed to be in gzip format and\nuncompressed on the fly as it is being read.\n\nIn addition, the Webalizer also supports DNS and GeoIP lookup capabilities.\n\n## Installing the Webalizer\n\n### Windows\n\nWindows pre-built package contains all run-time dependencies and can\nbe used as-is. Extract package contents to any directory, such as\n`c:\\tools\\webalizer\\`, and run it from there.\n\nIf you intend to use just one configuration file, the installation\ndirectory is probably the best place for it. Otherwise, you can use\nthe `-c` option to specify any configuration file. See _Configuration\nFiles_ for details on how configuration files are processed.\n\n### Linux\n\nStone Steps Webalizer depends on the following packages:\n\n  * GD Library v2 or newer\n  * Berkeley DB v4.3 or newer\n  * ZLIB v1 or newer\n  * MaxMindDB v1.2 or newer\n\nYou can see development package names for some common Linux flavors in\n`devops/Docker.*` files in the source repository to figure out binary\npackages.\n\nExtract contents of a pre-built Linux package to any directory and run\nthe `sudo ./install` script from there.\n\nThe script makes use of the following set of directories.\n\n* `/usr/local/bin/webalizer-stonesteps`\n\n  Contains the executable `webalizer`. If there is no existing file\n  `/usr/local/bin/webalizer`, a symbolic link with this name is created\n  to point to the executable in this directory.\n\n* `/usr/local/share/webalizer-stonesteps/www`\n\n  Contains shared CSS and JavaScript source files that should be copied\n  from this location to a directory where they can be referenced by\n  HTML reports.\n\n  Set `HTMLCssPath` and `HTMLJsPath` to point to the corresponding source\n  files in that final target directory that is accessible from the web site\n  serveing HTML reports generated by Stone Steps Webalizer. These source\n  files may be shared by multiple HTML reports.\n\n* `/usr/local/share/webalizer-stonesteps/lang`\n\n  Contains language localization files. Set `LanguageFile` to point to a\n  language file of your choice.\n\n* `/usr/local/share/webalizer-stonesteps/maxmind`\n\n  This directory is created as a location for MaxMind GeoIP and ASN databases,\n  which you need to download on your own from locations described further\n  in this file under their configuration values.\n\n  Set `GeoIPDBPath` and `ASNDBPath` to point to the corresponding MaxMind\n  database files in this location.\n\n* `/usr/local/share/doc/webalizer-stonesteps/`\n\n  Contains documentation files, licenses and change logs.\n\n* `/var/local/lib/webalizer-stonesteps/`\n\n  Set `DbPath` to point to this directory, which will contain current and\n  historic state database files, such as `webalizer.db` and `webalizer_202102.db`.\n  These state files may be used to generate HTML reports with the information\n  gathered when they were created.\n\nIf you intend to use just one configuration file, `/etc` is the best place\nfor it. Otherwise, you can use the `-c` option to specify any configuration\nfile. See _Configuration Files_ for details on how configuration files are\nprocessed.\n\nRun `sudo ./uninstall` from the directory where this script is located\nto remove all of the directories above. Note that existing state databases\nand MaxMind database files will not be deleted and if there are any, you\nwill need to delete them manually.\n\n### Building from Source\n\nBuilding from the source on Windows requires Visual Studio 2019 or newer.\nAll source dependencies are configured as Nuget packages and should be\npulled automatically during a build. Compiled binaries are generated in\nthe `build` directory.\n\nBuilding from the source on Linux requires development packages for\nall dependencies. See `devops/Docker.*` files for development package\nnames for some common Linux flavors.\n\nOnce all dependencies are installed, change to the source directory \nand run `make`.\n\nCompiled binaries are generated in the `build` directory, if you want\nto copy them into directories of your choice.\n\nYou can also install all files into directories described in the\ninstallation section above by running `sudo make install`. A short\nreference for installation directories and configuration variables\nis available via `make install-info`.\n\nRun `sudo make uninstall` to uninstall.\n\n## Running the Webalizer\n\nThe Webalizer was designed to be run from a Linux or Windows command line\nprompt or as a cron job.  There are several command line options which\nwill modify the results it produces, and configuration files can be used\nas well. The format of the command line is:\n\n    webalizer [options ...] [logfile [[ logfile]...] | report-database]\n\nWhere `options` can be one or more of the supported command line\nswitches described below.\n\n`logfile` is the name of the log file to process. Log file names are\ncollected from these distinct sources:\n\n  * `LogFile` variables in the default configuration file and its\n    includes.\n  * Command line, `LogFile` variables in configuration files specified\n    with the `-c` option and `Include` directives.\n  * If the `--pipe-log-names` option was used, log file names are\n    read from the standard input.\n\nIf a log file name is found in any of the sources above, the previous\nset of log file names is cleared, which prevents the possibility of\nthe same log file name accepted for processing more than once. For\nexample, if log files `A` and `B` are specified in `webalizer.conf`, and\nlog files `C` and  `D` are specified on the command line, then only `C`\nand `D` will be processed.\n\nMultiple log file collected from the same source will be processed in\ntheir log record time stamp order. This feature is intended for\nprocessing load-balanced log files from multiple web servers behind\nthe same site, but can also be used to process log files from the same\nweb server, in which case newer logs will just be processed after older\nlogs.\n\nIf a dash (`-`) is specified for the log-file name, `STDIN` will be used.\n\n`report-database` is the name of the database, not including file path\nor file extension, that will be used to generate a report.\n\nOnce executed, the general flow of the program follows:\n\n* The default configuration file is searched for in these locations:\n\n    * current directory\n    * system configuration directory (`/etc` on Linux or `c:\\windows`\n      on Windows)\n    * the directory where `webalizer` or `webalizer.exe` is located\n\n  If found, the default configuration file will be processed regardless\n  of whether one or more `-c` options are used on the command line.\n  \n* Any command line arguments given to the program are parsed. This\n  may include the specification of a configuration file (`-c`), which\n  is processed at the time it is encountered.\n\n* If any of the configuration files contains `Include` directives,\n  all included configuration files are processed as well.\n\n* All configuration files are processed in the order they are specified\n  on the command line or via `Include` directories. Single-value variables\n  overwrite those seen erarlier, but those that take multiple values,\n  such as `IgnoreURL` or `SearchEngine`, will all be collected in the\n  order they are encountered.\n\n* If `--prepare-report` was specified on the command line, the last\n  argument will be interpreted as a database file name. In this case a\n  report will be generated from the data stored in the database and\n  no log files will be processed.\n\n* If a log file was specified, it is opened and made ready for\n  processing. If no log file was given, or the filename `-` is\n  specified on the command line, `STDIN` is used for input.\n\n* If an output directory was specified, the program will generate\n  output in this directory. If no output directory was given, the\n  current directory is used.\n\n* If a non-zero number of `DNSChildren` processes were specified, the\n  corresponding number of DNS worker threads will be started, and IP\n  addresses in the specified log file will be either resolved to host\n  names or looked up in the GeoIP database, or both.\n\n* If no hostname was given, the program attempts to get the hostname\n  using a uname system call.  If that fails, `localhost` is used.\n\n* A history file is searched for.  This file keeps previous month\n  totals used on the main index.html page.  The default file is\n  named `webalizer.hist`, kept in the specified output directory,\n  however may be changed using the `HistoryName` configuration file\n  keyword.\n\n* A database file containing the internal state data of the program at\n  the end of a previous run is searched for and opened, if found. The\n  default database file is `webalizer.db` and is kept in the directory\n  specified using the `DbPath` configuration variable.\n\n* Main processing begins on the log file. If the log spans multiple\n  months, a separate HTML document is created for each month.\n\n* After main processing, the main `index.html` page is created, which\n  has totals by month and links to each months HTML document.\n\n* A new history file is saved to disk, which includes totals generated\n  by The Webalizer during the current run.\n\n* The database file is updated to contain the internal state data at the\n  end of this run.\n\n\n## Incremental Processing\n\nIncremental processing preserves current log items and numbers that you\nsee in all reports, such as URLs, IP addresses, request counts, transfer\namounts, etc., in a database file called `webalizer.db` and adds new items\nto this database or updates numbers for existing items when new log files\nare processed.\n\nOriginally, incremental processing was an optional mode that made it possible\nfor website administrators to process multiple rollover log files created by\nthe web server in the course of one month. The non-incremental mode remained\nthe default mode and was intended for large log files that contained one or\nmore months worth of data. With the rapid increase of web traffic over the\nyears, large log files became hard to manage and most website administrators\nchoose to rotate their logs either by size or by date. Given this trend, the\nincremental mode was changed to be the default processing mode in Stone Steps\nWebalizer v4.2.1.\n\nIMPORTANT: Stone Steps Webalizer uses the time stamp in each log record to\ntrack log records that have been already processed and if your logs are rotated\nbased on the log size, the time stamp in the first few records of each new log\nmay fall into the same second as last records of the previous log and will be\nignored when that log will be processed. Configure your log rotation based on\nthe date instead to avoid this, so each new log has distinct log record time\nstamps.\n\nSome special precautions need to be taken when using the incremental\nrun capability of The Webalizer.  Configuration options should not be\nchanged between runs, as that could cause corruption of the internal\nstored data.\n\nFor example, changing the `MangleAgents` level will cause different\nrepresentations of user agents to be stored, producing invalid results\nin the user agents section of the report.  If you need to change\nconfiguration options, do it at the end of the month after normal\nprocessing of the previous month and before processing the current\nmonth. You may also want to delete the database file as well.\n\nThe Webalizer also attempts to prevent data duplication by keeping\ntrack of the timestamp of the last record processed.  This timestamp\nis then compared to current records being processed, and any records\nthat were logged previous to that timestamp are ignored.  This, in\ntheory, should allow you to re-process logs that have already been\nprocessed, or process logs that contain a mix of processed/not yet\nprocessed records, and not produce duplication of statistics.  The\nonly time this may break is if you have duplicate timestamps in two\nseparate log files... any records in the second log file that do have\nthe same timestamp as the last record in the previous log file processed,\nwill be discarded as if they had already been processed.  This setup\nalso necessitates that you always process logs in chronological order,\notherwise data loss will occur as a result of the timestamp compare.\n\n## Output Produced\n\nThe Webalizer produces several reports (html) and graphics for each\nmonth processed.  In addition, a summary page is generated for the\ncurrent and previous months, a history file is created and the current\nmonth's processed data.\n\nThe exact location and names of these files can be changed using\nconfiguration files and command line options.  The files produced,\n(default names) are:\n\n\nname                    | description\n----                    | -----------\nindex.html              | Main summary page (extension may be changed)\nusage.png               | Yearly graph displayed on the main index page\nusage_YYYYMM.html       | Monthly summary page (extension may be changed)\nusage_YYYYMM.png        | Monthly usage graph for specified month/year\ndaily_usage_YYYYMM.png  | Daily usage graph for specified month/year\nhourly_usage_YYYYMM.png | Hourly usage graph for specified month/year\nsite_YYYYMM.html        | All hosts listing (if enabled)\nurl_YYYYMM.html         | All urls listing (if enabled)\nref_YYYYMM.html         | All referrers listing (if enabled)\nagent_YYYYMM.html       | All user agents listing (if enabled)\nsearch_YYYYMM.html      | All search strings listing (if enabled)\nsite_YYYYMM.tab         | tab delimited hosts file\nurl_YYYYMM.tab          | tab delimited urls file\nref_YYYYMM.tab          | tab delimited referrers file\nagent_YYYYMM.tab        | tab delimited user agents file\nuser_YYYYMM.tab         | tab delimited usernames file\nsearch_YYYYMM.tab       | tab delimited search string file\nagent_YYYYMM.json       | JSON array of user agents\nasn_YYYYMM.json         | JSON array of Autonomous System Numbers (ASN)\ncity_YYYYMM.json        | JSON array of Cities\ncountry_YYYYMM.json     | JSON array of Countries\ndaily_YYYYMM.json       | JSON array of days\ndl_YYYYMM.json          | JSON array of downloads\nerr_YYYYMM.json         | JSON array of errors\nhost_YYYYMM.json        | JSON array of hosts\nhourly_YYYYMM.json      | JSON array of hours\nref_YYYYMM.json         | JSON array of referrers\nsearch_YYYYMM.json      | JSON array of searches\nurl_YYYYMM.json         | JSON array of URLs\nusage_YYYYMM.json       | JSON object for the named month\nuser_YYYYMM.json        | JSON array of users\nwebalizer.hist          | Previous month history (may be changed)\nwebalizer.db            | Incremental Data (may be changed)\nwebalizer_YYYYMM.db     | Incremental Data (may be changed)\n\nThe yearly (index) report shows statistics for a number of months\nspecified by the `HistoryLength` configuration parameter and links to\neach month.  The monthly report has detailed statistics for that month\nwith additional links to any URL's and referrers found.\nThe various totals shown are explained below.\n\n### Hits\n\n  Any request made to the server which is logged, is considered a `hit`.\nThe requests can be for anything... html pages, graphic images, audio\nfiles, CGI scripts, etc...  Each valid line in the server log is\ncounted as a hit.  This number represents the total number of requests\nthat were made to the server during the specified report period. A\nrequest does not have to be successful to be counted as a hit.\n\nFor example, if a non-existing file is requested, the web server will\nrespond with a 404 (Not Found) error and the log file will contain an\nentry for this request, which will be counted as one hit.\n\n### Files\n\n  Successful requests served by the server are counted as files. A\nfile can be an html page or a dynamically processed page, such as a PHP\nor ASP page or an image. File total in the reports is a subset of of\nhits total.\n\n### Pages\n\n  Pages are, well, pages!  Generally, any HTML document, or anything\nthat generates an HTML document, would be considered a page.  This\ndoes not include the other stuff that goes into a document, such as\ngraphic images, audio clips, etc...  This number represents the number\nof `pages` requested only, and does not include the other `stuff` that\nis in the page.  What actually constitutes a `page` can vary from\nserver to server.  The default action is to treat anything with the\nextension `.htm`, `.html` or `.cgi` as a page.  A lot of sites will\nprobably define other extensions, such as `.phtml`, `.php3` and `.pl`\nas pages as well. Some other programs (and people :) refer to this as\n`Pageviews`.\n\nFor example, if a request for an HTML document is made that contains\ntwo links to images and one of these images is missing, Stone Steps\nWebalizer will count three hits (one for the HTML document and two for\nlinked image files), two files (one for the HTML document and one for\nexisting image) and one page (just the HTML document).\n\n### Hosts\n\n  Each request made to the server comes from a unique `host`, which\ncan be referenced by a name or, ultimately, an IP address.  The\n`hosts` number shows how many unique IP addresses made requests to the\nserver during the reporting time period.  This DOES NOT mean the\nnumber of unique individual users (real people) that visited, which is\nimpossible to determine using just logs and the HTTP protocol\n(however, this number might be about as close as you will get).\n\n### Visits\n\n  Whenever a request is made to the server from a given IP address\n(host), the amount of time since a previous request by the address\nis calculated.  If the time difference is greater than a\npre-configured _visit timeout_ value (or has never made a request before),\nit is considered a _new visit_, and this total is incremented for the\nhost. The default timeout value is 30 minutes (can be changed), so if\na user visits your site at 1:00 in the afternoon, and then returns at\n3:00, two visits would be  registered.\n\nNote: in the `Top Hosts` table, the visits total is a sum of all\nvisits of the grouped hosts.\n\nNote: A visit is started when any request is made to the server,\nwhether it was successful or not. Consider the following time diagram,\nwhere each `p` represents a successful page request and each `o`\nrepresents any other type of request (e.g. a failed page request, a\nfile request, etc).\n\n            ~~~~ visit ~~~~                  ~~ visit ~~\n           v               v                v           v\n     ------o---p------o-o--o----------------o---o-o-----o----------\u003e\n           ^~~~^           ^~~~~~~~~~~~~~~~~^                  time\n           5 min                 40 min\n\nStone Steps Webalizer will count in this case two visits, even though\nthe second visit did not request any pages.\n\n### Transfer\n\n  The Transfer value shows the amount of data that was sent out by\nthe server during the specified reporting period. This value is\ngenerated directly from the log file, so it is up to the web server\nto produce accurate numbers in the logs. In general, this should be\na fairly accurate representation of the amount of traffic the server\nhad, regardless of the web servers reporting quirks.\n\nBy default, most servers only log outgoing amounts (i.e. response\nsizes). IIS, Nginx and Apache may log incoming amounts as well\n(i.e. request sizes). Stone Steps Webalizer will include this type\nof traffic into the amount reported as `Transfer` if `UpstreamTraffic`\nis set to `yes` in the configuration file.\n\nTransfer amounts are reported since v4.2 with a unit suffix, such as\n`12.3 GB`, or as a number kilobytes. This behavior may be changed by\nsetting `ClassicKBytes` to `yes`. One kilobyte is counted as either `1024`\nor `1000` bytes, depending on the value of the `DecimalKBytes` configuration\nvariable.\n\n### Top Entry and Exit Pages\n\n  The Top Entry and Exit tables give a rough estimate of what URL's\nare used to enter your site, and what the last pages viewed are.\nBecause of limitations in the HTTP protocol, log rotations, etc...\nthis number should be considered a good \"rough guess\" of the actual\nnumbers, however will give a good indication of the overall trend in\nwhere users come into, and exit, your site.\n\nSometimes web servers log linked content before logging the page\ncontaining the links. Stone Steps Webalizer will track for each host\nwhether a page request has been made or not during the current visit\nand will report the first page URL, if any, as an entry URL. For\nexample, if an HTML page contained two linked image files, these files\nmay be logged before the page itself. Nevertheless, the page URL will\nbe reported as the entry page.\n\n## JSON Output\n\nJSON output is similar to TSV output in that it is intended for\nimporting data into a database, except that JSON output is formatted\nusing the Mongo DB flavor of JSON in order to deal with the lack of\nsupport for 64-bit integers in native JSON and to accommodate\nrepeated imports within the same database.\n\n### Extended JSON\n\nJavaScript natively supports double-precision floating point numbers,\nwhich limits integer values in JavaScript and, consequently, in JSON\nto 52 bits allocated for the significand. Mongo DB defines\n[Extended JSON][] syntax, which introduces special syntax for types\nthat cannot be expressed natively in JSON, including 64-bit numbers,\nwhich look like this in JSON output:\n\n    {\n      \"hits\": { \"$numberLong\": \"12345678\" }\n    }\n\nWhen imported into Mongo DB, data fields formatted this way will\nhave the type `Int64`.\n\n[Extended JSON]: https://docs.mongodb.com/manual/reference/mongodb-extended-json/#mongodb-bsontype-Int64\n\n### The `_id` Field\n\nEach log record item is represented in JSON as an object and each\nof those objects is identified via the `_id` field, which Mongo DB\nrecognizes as a special unique document identifier. This identifier\nis structured in JSON output to keep all data items within the year\nand month of their log files.\n\nFor example, a host with an IP address `12.34.56.78` may be tracked\nwithin the monthly state database, `webalizer.db`, for April under\na sequential identifier `321`. The same IP address may be tracked\nin the state database for May under a sequential identifier `654`.\nWhen this host is exported as a JSON object for each of these months,\ntheir `_id` fields will be constructed from the year, month and item\nID from their monthly state database, packed into a 64-bit integer,\nand would look like this in the Mongo DB collection storing hosts.\n\nJSON output `host_202104.json`:\n\n    {\n      \"_id\": { \"$numberLong\": \"4551450373411307841\" },\n      \"item_id\": { \"$numberLong\": \"321\" },\n      \"year\": 2021,\n      \"month\": 4,\n      \"ipaddr\": \"12.34.56.78\",\n      ...\n    }\n\nJSON output `host_202105.json`:\n\n    {\n      \"_id\": { \"$numberLong\": \"4551591110899663502\" },\n      \"item_id\": { \"$numberLong\": \"654\" },\n      \"year\": 2021,\n      \"month\": 5,\n      \"ipaddr\": \"12.34.56.78\",\n      ...\n    }\n\nThis means that `host_202104.json` and `host_202105.json` may be\nimported into the same Mongo DB collection without collisions for\ntheir monthly state database identifiers. Moreover, the same JSON\noutput file may be imported repeatedly into the same Mongo DB\ncollection, as more log files are processed for the same month,\nusing Mongo DB insert-or-update operation, which is known as\n_upsert_.\n\nThe value of the `_id` field for most items is comprised of 12\nbits for year, shifted left to follow the sign bit, 4 bits for\nthe month shifted left to follow the year and the rest used\nfor the item ID, which means that data items sorted by `_id`\nwill sort by year and month first and only then by their item\nID.\n\nThe `_id` field for daily and hourly objects is comprised of\nthe year, month and either day or hour, respectively,\nrepresented as a 32-bit integer (e.g. `\"_id\": 20210308`).\n\nThe `_id` field for monthly usage data is simply a year and\na month reporented as a 32-bit integer (e.g. `\"_id\": 202105`).\n\n### Data Units\n\nAll counts are reported as-is, so 1000 hits means that the item\nfor which this value is reported was requested 1000 times.\n\nTransfer amounts are reported in bytes, so the `12304` in `xfer`\nmeans that 12304 bytes were transferred for that item.\n\nVisit duration is reported in minutes.\n\nURL response times are reported in seconds.\n\nPercentages are reported against the corresponding total number\nin monthly stats. For example, `10%` in daily hits means that\nthe day for which this number is reported accounts for 10% of\nall requests reported for the corresponding month.\n\n### Data Layout\n\nData item objects described in this section may have different\nstructure, depending on data being processed, which may affect\ndatabase queries issued against these collections.\n\nSimple searches are reported as plain strings, such as this:\n\n    {\n      ...\n      \"hits\": { \"$numberLong\": \"2\" },\n      \"visits\": { \"$numberLong\": \"1\" },\n      \"search\": \"webalizer setup aspx sample\"\n    }\n\nAdvanced searches that capture additional search details, such as\nwhether all words must match, may be reported as an array of search\nterms and their types, such as this:\n\n    \"hits\": { \"$numberLong\": \"1\" },\n    \"visits\": { \"$numberLong\": \"1\" },\n    \"termcnt\": 2,\n    \"search\": [\n      {\n        \"type\": \"All Words\",\n        \"term\": \"stone steps\"\n      },\n      {\n        \"type\": \"Any Word\",\n        \"term\": \"webalizer\"\n      }\n    ]\n\n### Importing JSON Output\n\nJSON output may be imported into a Mobo DB using the [mongoimport][]\nutility provided by Mongo DB.\n\n[mongoimport]: http://docs.mongodb.com/database-tools/mongoimport/\n\nCommand line examples below use simplified Mongo DB connection syntax,\nassuming the database server is running locally. See `mongoimport`\ndocumentation for connecting to a remote database with authentication.\n\nAll examples should appear as single-line commands and are split onto\nmultiple lines via the `\\` character for visiblity. This character\nwill work as a line continuation on Linux, but will not on Windows.\nEither remove these characters or use the `^` character for Windows\ncommand prompt.\n\nAll data items, as well as hourly and daily data, are structured as\nJSON arrays and may be imported using following syntax.\n\n    mongoimport --db=webalizer_db \\\n                --collection=agents \\\n                --mode=upsert \\\n                --type=json \\\n                --jsonArray \\\n                mongodb://localhost agent_202105.json\n\nMonthly usage data in JSON output contains a single JSON object and\nmust be imported without the `--jsonArray` option.\n\n    mongoimport --db=webalizer_db \\\n                --collection=usage \\\n                --mode=upsert \\\n                --type=json \\\n                mongodb://localhost usage_202105.json\n\nDatabase and collection names can be anything, as long as they are\nthey same for all imports. The `--mode=upsert` option will update\nexisting documents with matching `_id` fields and insert new ones.\n\n## Command Line Options\n\nThe Webalizer supports many different configuration options that will\nalter the way the program behaves and generates output.  Most of these\ncan be specified on the command line, while some can only be specified\nin a configuration file. The command line options are listed below,\nwith references to the corresponding configuration file keywords.\n\nNote that most command line options are case-sensitive. That is, `-F`\nand `-f` are different options.\n\n\n### General Options\n\n* `-h`, `--help`\n\n    Display all available command line options and exit program.\n\n* `-v`, `-V`, `--version`\n\n    Display program version and exit program.\n\n* `-w`, `-W`, `--warranty`\n\n    Displays the GNU warranty disclaimer.\n\n* `-d`\n\n    Display additional `debugging` information for errors and\n    warnings produced during processing.  This normally would\n    not be used except to determine why you are getting all those\n    errors and wanted to see the actual data.  Normally The\n    Webalizer will just tell you it found an error, not the\n    actual data.  This option will display the data as well.\n\n    Config file keyword: `Debug`\n\n* `-F`\n\n    Specify that the log file format. By default, Stone Steps\n    Webalizer expects IIS log file, but may be instructed to\n    process other formats: W3C, IIS, Nginx, Apache, CLF, Squid.\n\n    Config file keyword: `LogType`\n\n* `-i`\n\n    Ignore history file.  USE WITH CAUTION.  This causes The\n    Webalizer to ignore any existing history file produced from\n    previous runs and generate it's output from scratch.  The\n    effect will be as if The Webalizer is being run for the\n    first time and any previous statistics will be lost (although\n    the HTML documents, if any, will not be deleted) on the main\n    index.html (yearly) web page.\n\n    Config file keyword: `IgnoreHist`\n\n* `-q`\n\n    `Quiet` mode.  Normally, The Webalizer will produce various\n    messages while it runs letting you know what it's doing.\n    This option will suppress those messages.  It should be\n    noted that this WILL NOT suppress errors and warnings, which\n    are output to `STDERR`.\n\n    Config file keyword: `Quiet`\n\n* `-Q`\n\n    `ReallyQuiet` mode.  This allows suppression of _all_ messages\n    generated by The Webalizer, including warnings and errors.\n    Useful when The Webalizer is run as a cron job.\n\n    Config file keyword: `ReallyQuiet`\n\n* `-T`\n\n    Display timing information.  The Webalizer keeps track of the\n    time it begins and ends processing, and normally displays the\n    total processing time at the end of each run.  If quiet mode\n    (`-q` or `Quiet yes` in configuration file) is specified, this\n    information is not displayed.  This option forces the display\n    of timing totals if quiet mode has been specified, otherwise\n    it is redundant and will have no effect.\n\n    Config file keyword: `TimeMe`\n\n* `-c file`\n\n    This option specifies a configuration file to use. Configuration\n    files allow greater control over how The Webalizer behaves, and\n    there are several ways to use them. Note that the default\n    configuration file is processed regardless of whether any `-c`\n    option is specified.\n\n* `-n name`\n\n    This option specifies the hostname for the reports generated.\n    The hostname is used in the title of all reports, and is also\n    prepended to URL's in the reports. This allows The Webalizer\n    to be run on log files for `virtual` web servers or web servers\n    that are different than the machine the reports are located on,\n    and still allows clicking on the URL's to go to the proper\n    location.  If a hostname is not specified, either on the\n    command line or in a configuration file, The Webalizer attempts\n    to determine the hostname using a `uname` system call.  If this\n    fails, `localhost` will be used as the hostname.\n\n    Config file keyword: `SiteName`\n\n* `-o dir`\n\n    This options specifies the output directory for the reports.\n    If not specified here or in a configuration file, the current\n    default directory will be used for output.\n\n    Config file keyword: `OutputDir`\n\n* `-x name`\n\n    This option allows the generated pages to have an extension\n    other than `.html`, which is the default.  Do not include the\n    leading period (`.`) when you specify the extension.\n\n    Config file keyword: `HTMLExtension`\n\n* `-P name`\n\n    Specify the file extensions for `pages`.  Pages (sometimes\n    called `PageViews`) are normally html documents and CGI\n    scripts that display the whole page, not just parts of it.\n    Some system will need to define a few more, such as `phtml`,\n    `php3` or `pl` in order to have them counted as well.  The\n    default is `htm*` and `cgi` for web logs.\n\n    Config file keyword: `PageType`\n\n* `-t name`\n\n    This option specifies the title string for all reports.  This\n    string is used, in conjunction with the hostname (if not blank)\n    to produce the actual title.  If not specified, the default of\n    \"Usage Statistics for\" will be used.\n\n    Config file keyword: `ReportTitle`\n\n* `-Y`\n\n    Suppress Country graph.  Normally, The Webalizer produces\n    country statistics in both Graph and Columnar forms.  This\n    option will suppress the Country Graph from being generated.\n\n    Config file keyword: `CountryGraph`\n\n* `-G`\n\n    Suppress hourly graph.  Normally, The Webalizer produces\n    hourly statistics in both Graph and Columnar forms.  This\n    option will suppress the Hourly Graph only from being generated.\n\n    Config file keyword: `HourlyGraph`\n\n* `-H`\n\n    Suppress Hourly statistics.  Normally, The Webalizer produces\n    hourly statistics in both Graph and Columnar forms.  This\n    option will suppress the Hourly Statistics table only from\n    being generated.\n\n    Config file keyword: `HourlyStats`\n\n* `-L`\n\n    Disable Graph Legends.  The color coded legends displayed on\n    the in-line graphs can be disabled with this option.  The\n    default is to display the legends.\n\n    Config file keyword: `GraphLegend`\n\n* `-l num`\n\n    Graph Lines.  Specify the number of background reference\n    lines displayed on the in-line graphics produced.  The default\n    is 2 lines, however can range anywhere from zero (`0`) for\n    no lines, up to 20 lines (looks funny!).\n\n    Config file keyword: `GraphLines`\n\n* `-P name`\n\n    Page type.  This is the extension of files you consider to\n    be pages for Pages calculations (sometimes called `pageviews`).\n    The default is `htm*` and `cgi` (plus whatever HTMLExtension\n    you specified if it is different). Don't use a period!\n\n* `-m num`\n\n    Specify a visit timeout. Visits are calculated by looking at\n    the time difference between the current and last request made\n    by a specific host.  If the difference is greater that the\n    visit timeout value, the request is considered a new visit.\n    This value is specified in number of seconds.  The default\n    is 30 minutes (`1800`). Optional suffixes `m` and `h` may be\n    used to specify this value in minutes or hours, respectively.\n\n    Config file keyword: `VisitTimeout`\n\n* `-M num`\n\n    Mangle user agent names. See `MangleAgents` entry below for\n    details about this option.\n\n    Configuration file keyword: `MangleAgents`\n\n* `-g num`\n\n    This option allows you to specify the level of domains name\n    grouping to be performed.  The numeric value represents the\n    level of grouping, and can be thought of as the \"number of\n    dots\" to be displayed.  The default value of `0` disables any\n    domain name grouping.\n\n    Configuration file keyword: `GroupDomains`\n\n* `-D name`\n\n    This allows the specification of a DNS cache file name.  This\n    filename MUST be specified if you have dns lookups enabled\n    (using the `-N` command line switch or `DNSChildren` configuration\n    keyword).  The filename is relative to the default output\n    directory if an absolute path is not specified (ie: starts\n    with a leading `/`).\n\n* `-N num`\n\n    Number of DNS child processes to use for reverse DNS and GeoIP\n    lookups. If specified, `DNSCache` or `GeoIPDBPath` must also be\n    specified. If you do not wish a DNS cache file to be generated,\n    omit `DNSCache` to disable DNS resolution. A value `0` will\n    disable DNS and GeoIP look-ups.\n\n* `--prepare-report`\n\n    Instructs Stone Steps Webalizer to interpret the last\n    argument as a name of the database file rather than a log\n    file name and generate monthly report using the data from\n    the database.\n\n* `--last-log`\n\n    Allows SSW to avoid generating an unnecessary end-of-month\n    report at the beginning of the next month. That is, when a\n    log file is being processed, it is not known whether there\n    is more data to process or not and, consequently, all active\n    visits and downloads are kept active at the end of the run.\n    When the first log record from the next month is processed,\n    all active visits and downloads are ended and the final\n    report is generated. The `--last-month` option allows Stone\n    Steps Webalizer to avoid this step by explicitly marking the\n    current log file as the last one for the month, so the final\n    report can be generated.\n\n* `--batch`\n\n    Instructs Stone Steps Webalizer to run in the batch mode.\n    For details, the Database Configuration Options section of\n    this document.\n\n* `--end-month`\n\n    End all active visits in the current database, close it and\n    roll over the database file. This command works only against\n    the current database and requires only the output path. For\n    example:\n\n        webalizer -o reports --end-month\n\n* `--compact-db`\n\n    Compact the database file to attempt to decrease its size.\n\n* `--db-info`\n\n    Print information about the specified database\n\n* `--pipe-log-names`\n\n    Instructs Stone Steps Webalizer to read log file names from the\n    standard input. Each log name must be on its own line.\n\n    Windows (line break is for readability):\n\n        dir /s /b srv-a\\logs\\ex1202*.log srv-b\\logs\\ex1202*.log |\n            webalizer -o reports --pipe-log-names\n\n    Linux (line break is for readability):\n\n        ls -1 srv-a/logs/ex1202*.log srv-b/logs/ex1202*.log |\n            webalizer -o reports --pipe-log-names\n\n### Hide Options\n\nThe following options take a string argument to use as a comparison\nfor matching.  Except for the `IndexAlias`, `ExcludeSearchArg` and\n`IncludeSearchArg` options, the string argument can be plain text, or\nplain text that either starts or ends with the wildcard character `*`.\n\nA string argument without an asterisk will be interpreted as a\nsubstring and will match anywhere in the original string. A string\nending with an asterisk will match the beginning of the string. A\nstring starting with an asterisk will match the end of the string.\n\nNote that asterisks may be specified only at the beginning or end of\nthe argument and not in the middle. That is, this argument is invalid:\n`some*text`. For example:\n\nGiven the string `yourmama/was/here`, the arguments `was`, `*here` and\n`your*` will all produce a match.\n\n\n* `-a name`\n\n    This option allows hiding of user agents (browsers) from the\n    \"Top User Agents\" table in the report.  This option really\n    isn't too useful as there are a zillion different names that\n    current browsers go by, depending where they were obtained,\n    however you might have some particular user agents that hit\n    your site a lot that you would like to exclude from the list.\n    You must have a web server that includes user agents in it's\n    log files for this option to be of any use.  In addition, it\n    is also useless if you disable the user agent table in the\n    report (see the `-A` command line option or `TopAgents`\n    configuration file keyword). You can specify as many of these\n    as you want on the command line.  The wildcard character `*`\n    can be used either in front of or at the end of the string.\n    (ie: `Mozilla/4.0*` would match anything that starts with\n    `Mozilla/4.0`).\n\n    Config file keyword: `HideAgent`\n\n* `-r name`\n\n    This option allows hiding of referrers from the \"Top Referrer\"\n    table in the report.  Referrers are URL's, either on your own\n    local site or a remote site, that referred the user to a URL\n    on your web server.  This option is normally used to hide\n    your own server from the table, as your own pages are usually\n    the top referrers to your own pages (well, you get the idea).\n    You must have a web server that includes referrer information\n    in the log files for this option to be of any use.  In addition,\n    it is also useless if you disable the referrers table in the\n    report (see the `-R` command line option or `TopReferrers`\n    configuration file keyword).  You can specify as many of these\n    as you like on the command line.\n\n    Config file keyword: `HideReferrer`\n\n* `-s name`\n\n    This option allows hiding of hosts from the \"Top Hosts\" table\n    in the report.  Normally, you will only want to hide your own\n    domain name from the report, as it usually is one of the top\n    hosts to visit your web server.  This option is of no use if\n    you disable the top hosts table in the report (see the -S\n    command line option or `TopSites` configuration file option).\n\n    Config file keyword: `HideSite`\n\n* `-X`\n\n    This causes all individual hosts to be hidden, which results\n    in only grouped hosts to be displayed on the report.\n\n    Config file keyword: `HideAllHosts`\n\n* `-u name`\n\n    This option allows hiding of URL's from the \"Top URL's\" table\n    in the report.  Normally, this option is used to hide images,\n    audio files and other objects your web server dishes out that\n    would otherwise clutter up the table.  This option is of no\n    use if you disable the top URL's table in the report (see the\n    `-U` command line option or `TopURLs` configuration file keyword).\n\n    Config file keyword: `HideURL`\n\n* `-I name`\n\n    This option allows you to specify additional `index.html` aliases.\n    Unless `NoDefaultIndexAlias` is specified in the configuration\n    file, Stone Steps Webalizer strips the string `index.` from\n    URL's before processing, which has the effect of turning a\n    URL such as `/somedir/index.html` into just `/somedir/` which is\n    really the same URL and should be treated as such.  This\n    option allows you to specify _additional_ strings that are\n    to be treated the same way.  Use with care, improper use\n    could cause unexpected results.\n\n    For example, if you specify the alias string of `home`, a URL\n    such as `/somedir/homepages/brad/home.html` would be converted\n    into just `/somedir/` which probably isn't what was intended.\n\n    This option is useful if your web server uses a different default\n    index page other than the standard `index.html` or `index.htm`,\n    such as `home.html` or `homepage.html`.  The string specified\n    is searched for _anywhere_ in the URL, so `home.htm` would\n    turn both `/somedir/home.htm` and `/somedir/home.html` into\n    just `/somedir/`.  Go easy on this one, each string specified\n    will be scanned for in EVERY log record, so if you specify a\n    bunch of these, you will notice degraded performance.  Wildcards\n    are not allowed on this one.\n\n    Config file keyword: `IndexAlias`\n\n### Table Size Options\n\n* `-e num`\n\n    This option specifies the number of entries to display in the\n    \"Top Entry Pages\" table.  To disable the table, use a value of\n    zero (`0`).\n\n    Config file keyword: `TopEntry`\n\n* `-E num`\n\n    This option specifies the number of entries to display in the\n    \"Top Exit Pages\" table.  To disable the table, use a value of\n    zero (`0`).\n\n    Config file keyword: `TopExit`\n\n* `-A num`\n\n    This option specifies the number of entries to display in the\n    \"Top User Agents\" table.  To disable the table, use a value of\n    zero (`0`).\n\n    Config file keyword: `TopAgents`\n\n* `-C num`\n\n    This option specifies the number of entries to display in the\n    \"Top Countries\" table.  To disable the table, use a value of\n    zero (`0`).\n\n    Config file keyword: `TopCountries`\n\n* `-R num`\n\n    This option specifies the number of entries to display in the\n    \"Top Referrers\" table.  To disable the table, use a value of\n    zero (`0`).\n\n    Config file keyword: `TopReferrers`\n\n* `-S num`\n\n    This option specifies the number of entries to display in the\n    \"Top Sites\" table.  To disable the table, use a value of\n    zero (`0`).\n\n    Config file keyword: `TopSites`\n\n* `-U num`\n\n    This option specifies the number of entries to display in the\n    \"Top URL's\" table.  To disable the table, use a value of\n    zero (`0`).\n\n    Config file keyword: `TopURLs`\n\n## Configuration Files\n\nThe Webalizer allows configuration files to be used in order to simplify\nlife for all.  There are several ways that configuration files are accessed\nby the Webalizer.  When The Webalizer first executes, it looks for a\ndefault configuration file named `webalizer.conf` in the following\ndirectories, in this order:\n\n  * current directory\n  * system configuration directory (`/etc` on Linux or `c:\\windows`\n    on Windows)\n  * the directory where the `webalizer` or `webalizer.exe` is\n    located\n\nCustom configuration files may be specified on the command line with\nthe `-c` option. Custom configuration files will be processed after\nthe default configuration file, in the order they are encountered on the\ncommand line.\n\nThe default configuration file and custom configuration files may\ninclude additional configuration files via the `Include` directive,\nwhich may contain an optional domain name as a condition.\n\nFor example, the following configuration parameter will instruct\nStone Steps Webalizer to read the configuration file called\n`webalizer_hide.conf` located in the specified directory:\n\n    Include    c:\\tools\\webalizer\\webalizer_hide.conf\n\nConfiguration files may be included based on the domain name. That is,\nif a domain name is specified with the `-n` option, the domain name in\nthe `Include` directive will be compared with the command line domain\nname.\n\nFor example, given these two configuration lines:\n\n    Include c:\\tools\\webalizer\\webalizer_hide-a.conf  www.a.com\n    Include c:\\tools\\webalizer\\webalizer_hide-b.conf  www.b.com\n\n, the first include file will be processed if the command line\ncontains `-n www.a.com` and the second one will be processed if there\nis `-n www.b.com`.\n\nDomain-specific includes are particularly useful when processing\nlog files for multiple sites, as they allow to maintain common\nconfiguration in a single file, which greatly simplifies\nconfiguration maintenance.\n\nThere are lots of different ways you can combine the use of\nconfiguration files and command line options to produce various\nresults. The evaluation order is as follows:\n\n  * The default configuration file, if found, is processed.\n\n  * Configuration files specified with the `-c` option, are processed\n    as they are encountered. Values for options that are further on the\n    command line override earlier options, including those found in any\n    configuration files.\n\n  * Configuration files specified in `Include` directives are queued\n    for further processing.\n\n  * After all custom configuration files are processed, queued include\n    files are processed in the order they appeared in their configuration\n    files.\n\nIf you specify a configuration file on the command line, you\ncan override those options by additional command line options which\nfollow.\n\nSome options cannot be overridden, such as `Quiet yes` because the\ncommand line option `-q` only _enables_ this behavior and there is\nno option to disable it.\n\nThe configuration files are standard ASCII text files that may be created\nor edited using any standard editor.  Blank lines and lines that begin\nwith a pound sign (`#`) are ignored.  Any other lines are considered to\nbe configuration lines, and have the form \"Keyword Value\", where the\n`Keyword` is one of the currently available configuration keywords defined\nbelow, and `Value` is the value to assign to that particular option.  Any\ntext found after the keyword up to the end of the line is considered the\nkeyword's value, so you should not include anything after the actual value\non the line that is not actually part of the value being assigned.  The\nfile `sample.conf` provided with the distribution contains lots of useful\ndocumentation and examples as well.  It should be noted that you do not\nhave to use any configuration files at all, in which case, default values\nwill be used (which should be sufficient for most sites).\n\n### General Configuration Keywords\n\n* `LogFile`\n\n    This defines the log file to use. It can be a fully qualified\n    path or a relative path. In the latter case, the current\n    directory and the directory identified with `LogDir` will be\n    searched. If used more than one time, Stone Steps Webalizer\n    will process log records from each file in their time stamp\n    order. If `LogFile` is not specified and none is provided through\n    the command line, the logfile defaults to `STDIN`.\n\n* `LogDir`\n\n    Defines an optional path to the log directory. If `LogDir` is not\n    empty and `LogFile` is not an absolute path (i.e. not starting with\n    a drive letter or a path separator slash character), the complete\n    log file path will be derived by combining `LogDir` and `LogFile`.\n\n    Default value: none\n\n* `LogType`\n\n    This specified the log file type being used. Values may\n    be either `w3c`, `iis`, `apache`, `clf` or `squid`.\n    Ensure that you specify the proper file type, otherwise\n    you will be presented with a long stream of `invalid\n    record` messages ;)\n\n    Command line argument: `-F`\n\n* `OutputDir`\n\n    This defines the output directory to use for the reports.  If\n    it is not specified, the current directory is used.\n\n    Command line argument: `-o`\n\n* `OutputFormat`\n\n    Specifies the format of the generated reports. These formats,\n    are supported:\n\n     * HTML\n     * TSV\n     * JSON\n\n    HTML is the default format and will be used if no other format\n    is specified.\n\n    TSV stands for \"tab-separated values\" and will instruct Stone\n    Steps Webalizer to generate `.tab` files, as if all `DumpX` options\n    were set to `yes`. Note that if at least one `DumpX` option is used,\n    TSV report is added automatically to the list of output formats.\n\n    JSON stands for JavaScript Object Notation and outputs all items\n    with the intent of importing them into Mongo DB.\n\n    Multiple `OutputFormat` entries may be used in order to generate\n    reports in more than one format.\n\n* `HistoryName`\n\n    Allows specification of a history path/filename if desired.\n    The default is to use the file named `webalizer.hist`, kept\n    in the normal output directory (`OutputDir` above).  Any name\n    specified is relative to the normal output directory unless\n    an absolute path name is given (ie: starts with a `/`).\n\n* `ReportTitle`\n\n    This specifies the title to use for the generated reports.\n    It is used in conjunction with the hostname (unless blank)\n    to produce the final report titles.  If not defined, the\n    default of \"Usage Statistics for\" is used.\n\n    Command line argument: `-t`\n\n* `SiteName`\n\n    This defines the site hostname. The hostname is used in the\n    report title as well as being prepended to URL's in the\n    \"Top URL's\" table.  This allows The Webalizer to be run\n    on \"virtual\" web servers, or servers that do not reside\n    on the local machine, and allows clicking on the URL to\n    go to the right place.  If not specified, The Webalizer\n    attempts to get the hostname via a `uname` system call,\n    and if that fails, will default to `localhost`.\n\n    Command line argument: `-n`\n\n* `SiteAlias`\n\n    Specifies an alternative site host name. Multiple `SiteAlias`\n    entries can be used in configuration files to register more\n    than one alias. Site aliases are used as a white list when\n    checking for spam links in search strings.\n\n* `UseHTTPS`\n\n    Causes the links in the `Top URL's` table to use `https://`\n    instead of the default `http://` prefix if the request port\n    is either not present in the logs or if the URL was requested\n    over a secure port at least once. Ports are identified by\n    `HttpsPort` and `HttpPort` settings, respectively. `UseHTTPS` is\n    ignored for URLs that were requested over the port identified\n    by `HttpPort` or some port other than `HttpsPort`.\n\n    For example, if `HttpPort` is `80` and `HttpsPort` is `443` and\n\n    * page `A` was requested over port `80`,\n    * page `B` was requested over port `443`,\n    * page `C` was requested over ports `80` and `443`,\n    * page `D` was requested over ports `80` and `8080`,\n    * page `E` was requested over ports `8080` and `443`\n\n    , then when `UseHTTPS` is set to `no`, only page `B` will be rendered\n    with the `https://` prefix and when `UseHTTPS` is set to `yes`,\n    pages `B`, `C` and `E` will be rendered with the `https://` prefix.\n\n* `Quiet`\n\n    This allows you to enable or disable informational messages\n    while it is running.  The values for this keyword can be\n    either `yes` or `no`.  Using `Quiet yes` will suppress these\n    messages, while `Quiet no` will enable them.  The default\n    is `no` if not specified, which will allow The Webalizer\n    to display informational messages.  It should be noted that\n    this option has no effect on Warning or Error messages that\n    may be generated, as they go to `STDERR`.\n\n    Command line argument: `-q`\n\n* `TimeMe`\n\n    This allows you to display timing information regardless of\n    any \"quiet mode\" specified.  Useful only if you did in fact\n    tell the webalizer to be quiet either by using the `-q` command\n    line option or the `Quiet` keyword, otherwise timing stats\n    are normally displayed anyway.  Values may be either `yes`\n    or `no`, with the default being `no`.\n\n    Command line argument: `-T`\n\n* `UTCTime`, `GMTTime`\n\n    This keyword allows timestamps to be displayed in GMT (UTC)\n    time instead of local time.  Normally The Webalizer will\n    display timestamps in the time-zone of the local machine\n    (ie: PST or EDT).  This keyword allows you to specify the\n    display of timestamps in GMT (UTC) time instead.  Values\n    may be either `yes` or `no`.\n\n    Default is `no`.\n\n* `UTCOffset`\n\n    Specifies the difference between the local time and UTC time,\n    without factoring in the daylight saving time adjustment. For\n    example, Eastern Standard Time (EST) is 5 hours behind UTC and\n    the `UTCOffset` value for EST would be -5h. `UTCOffset` is only\n    applied when the log time zone type doesn't match the UTCTime\n    value. In other words, log time in Apache and CLF logs will\n    not be adjusted by `UTCOffset` if `UTCTime` is set to `no`, but\n    IIS logs will be in the same configuration.\n\n    Default value: `0`\n\n* `LocalUTCOffset`\n\n    Controls if the UTC offset of the machine running Stone\n    Steps Webalizer can be used to automatically set `UTCOffset`.\n    Note that daylight savings time offset is not included into\n    `UTCOffset`.\n\n    Default value: `no`\n\n* `DSTOffset`\n\n    Specifies the difference between the standard and daylight\n    saving time. For example, setting `DSTOffset` to 1h instructs\n    Stone Steps Webalizer to add one hour to those log time\n    stamps that are greater than or equal to `DSTStart` and less\n    than `DSTEnd`.\n\n    Default value: `0`\n\n* `DSTStart`, `DSTEnd`\n\n    Specifies the beginning and the end of the daylight saving\n    time. `DSTStart` is in local time and `DSTEnd` is in local\n    daylight saving time. All log time stamps greater than or\n    equal to `DSTStart` and less than `DSTEnd` will be adjusted by\n    `DSTOffset`.\n\n    Multiple `DSTStart` and `DSTEnd` ranges may be added to cover more\n    than one year. For example, this configures Eastern Daylight\n    Saving Time for `2009` and `2010`:\n\n        DSTStart\t\t2009/03/09 2:00\n        DSTEnd\t\t2009/11/01 2:00\n        DSTStart\t\t2010/03/14 2:00\n        DSTEnd\t\t2010/11/07 2:00\n\n    `DSTStart` and `DSTEnd` are not evaluated if `DSTOffset` is zero.\n\n    Default value: none\n\n* `Debug`\n\n    This tells The Webalizer to display additional information\n    when it encounters Warnings or Errors.  Normally, The\n    Webalizer will just tell you it found a bad record or\n    field.  This option will enable the display of the actual\n    data that produced the Warning or Error as well.  Useful\n    only if you start getting lots of Warnings or Errors and\n    want to determine the cause.  Values may be either `yes`\n    or `no`, with the default being `no`.\n\n    Command line argument: `-d`\n\n* `IgnoreHist`\n\n    This suppresses the reading of a history file.  USE WITH\n    EXTREME CAUTION as the history file is how The Webalizer\n    keeps track of previous months.  The effect of this option\n    is as if The Webalizer was being run for the very first\n    time, and any previous data is discarded.  Values may be\n    either `yes` or `no`, with the default being `no`.\n\n    Command line argument: `-i`\n\n* `VisitTimeout`\n\n    Set the `visit timeout` value.  Visits are determined by\n    looking at the time difference between the current and last\n    request made by a specific host.  If the difference in time\n    is greater than the visit timeout value, the request is\n    considered a new visit.  The value is in number of seconds,\n    and defaults to 30 minutes (`1800`). Optional suffixes `m` and\n    `h` may be used to specify this value in minutes or hours,\n    respectively.\n\n    Command line argument: `-m`\n\n* `MaxVisitLength`\n\n    Sets the maximum visit length, which will forcibly end long\n    visits, regardless of the `VisitTimeout` value.\n    \n    Default value: `0`.\n\n* `MinVisitLength`\n\n    Sets the minimum visit value for human visitors. Intended to\n    account for people searching for specific things and clicking\n    the Back button soon after skimming or scanning through some\n    of the page text. Used only if the visit length would be\n    computed as zero otherwise and if the visit has a successful\n    page or a file request.\n\n    Default value: `0`\n\n* `PageType`\n\n    Allows you to define the `page` type extension.  Normally,\n    people consider HTML and CGI scripts as `pages`.  This\n    option allows you to specify what extensions you consider\n    a page.  Default is `txt`, `php`, `htm*` and `cgi` for\n    Apache and CLF logs, `txt`, `asp`, `aspx`, and `htm*`\n    for IIS logs.\n\n    Command line argument: `-P`\n\n* `PageEntryURL`\n\n    HTTP requests are logged at the end of the request processing\n    cycle, which may cause a page to be logged after all of the\n    resources it references, such as images or style sheets. In\n    this case, an entry URL may be an image or some other file,\n    which is not very informative. When `PageEntryURL` is set to\n    `yes`, Stone Steps Webalizer will ignore non-pages when\n    collecting data for entry URL. If set to `no`, any successful\n    first request in a visit will be reported as an entry URL,\n    regardless of its type.\n\n    Default value: `yes`\n\n* `GraphLegend`\n\n    Enable/disable the display of color coded legends on the\n    produced graphs.  Default is `yes`, to display them.\n\n    Command line argument: `-L`\n\n* `GraphLines`\n\n    Specify the number of background reference lines to display\n    on produced graphs.  The default is `2`.  To disable the use\n    of background lines, use zero (`0`).\n\n    Command line argument: `-l`\n\n* `CountryGraph`\n\n    This keyword is used to either enable or disable the creation\n    and display of the Country Usage graph.  Values may be either\n    `yes` or `no`, with the default being `yes`.\n\n    Command line argument: `-Y`\n\n* `JavaScriptChartsMap`\n\n    If `CountryGraph` is enabled and `JavaScriptCharts` is configured,\n    the country chart will be rendered as a world map instead of\n    a pie chart.\n\n* `DailyGraph`\n\n    This keyword is used to either enable or disable the creation\n    and display of the Daily Usage graph.  Values may be either\n    `yes` or `no`, with the default being `yes`.\n\n* `DailyStats`\n\n    This keyword is used to either enable or disable the creation\n    and display of the Daily Usage statistics table.  Values may\n    be either `yes` or `no`, with the default being `yes`.\n\n* `HourlyGraph`\n\n    This keyword is used to either enable or disable the creation\n    and display of the Hourly Usage graph.  Values may be either\n`yes` or `no`, with the default being `yes`.\n\n    Command line argument: `-G`\n\n* `HourlyStats`\n\n    This keyword is used to either enable or disable the creation\n    and display of the Hourly Usage statistics table.  Values may\n    be either `yes` or `no`, with the default being `yes`.\n\n    Command line argument: `-H`\n\n* `IndexAlias`\n\n    This allows additional `index.html` aliases to be defined.\n    Normally, The Webalizer scans for and strips the string\n    \"index.\" from URL's before processing them.  This turns a\n    URL such as `/somedir/index.html` into just `/somedir/` which\n    is really the same URL.  This keyword allows _additional_\n    names to be treated in the same fashion for sites that use\n    different default names, such as `home.html`.  The string\n    is scanned for anywhere in the URL, so care should be used\n    if and when you define additional aliases.\n\n    For example, if you were to use an alias such as `home`, the\n    URL `/somedir/homepages/brad/home.html` would be turned into\n    just `/somedir/` which probably isn't the intended result.\n    Instead, you should have specified `home.htm` which would\n    correctly turn the URL into `/somedir/homepages/brad/` like\n    intended.\n\n    It should also be noted that specified aliases are scanned\n    for in EVERY log record... A bunch of aliases will noticeably\n    degrade performance as each record has to be scanned for\n    every alias defined.  You don't have to specify `index.` as\n    it is always the default.\n\n    Command line argument: `-I`\n\n* `MangleAgents`\n\n    The `MangleAgents` keyword specifies the level of user agent\n    name mangling, if any.\n\n    Normally, The Webalizer will keep track of the user agent field\n    verbatim. Unfortunately, there are a ton of different names that\n    user agents go by, and the field also reports other items such as\n    machine type and OS used.\n\n    For example, Netscape 4.03 running on Windows 95 will report a\n    different string than Netscape 4.03 running on Windows NT, so\n    even though they are the same browser type, they will be considered\n    as two totally different browsers by The Webalizer. For that matter,\n    Netscape 4.0 running on Windows NT will report different names if\n    one is run on an Alpha and the other on an Intel processor!\n    Internet Exploder is even worse, as it reports itself as if it\n    were Netscape and you have to search the given string a little\n    deeper to discover that it is really MSIE! In order to consolidate\n    generic browser types, this option will cause The Webalizer to\n    \"mangle\" the user agent field, attempting to consolidate generic\n    browser types.\n\n    Stone Steps Webalizer has two methods for mangling user agent\n    names. One is the classic Webalizer method and one is a new\n    method based on user agent filters (`ExcludeAgentArgs`,\n    `IncludeAgentArgs` and `GroupAgentArgs`).\n\n    **Classic User Agent Name Mangling**\n\n    Classic user agent mangling method allows to specify 5 levels\n    of mangling, each producing different level of detail.\n\n    * Level 5 displays only the browser name (MSIE or Mozilla) and\n      the major version number.\n\n    * Level 4 will also display the minor version number (single\n      decimal place).\n\n    * Level 3 will display the minor version number to two decimal\n      places.\n\n    * Level 2 will add any sub-level designation (such as Mozilla/3.01Gold\n      or MSIE 3.0b).\n\n    * Level 1 will also attempt to add the system type.\n\n    The default Level 0 will disable name mangling and leave the\n    user agent field unmodified, producing the greatest amount of\n    detail.\n\n    **User Agent Name Mangling Filters**\n\n    If `UseClassicMangleAgents` is set to `no`, which is the default\n    setting, filter-based mangling will be used. In this mode, user\n    agent arguments are classified as product versions, URLs or\n    generic arguments and may be manipulated via mangle level or via\n    user agent include, exclude and group filters.\n\n    Before v6.2.0 setting mangle level to a non-zero value resulted\n    in a few predefined filters added automatically. Starting from\n    this version, there are no default filters added. If you would\n    like to mimic the pre-v6.2.0 behavior, you can add the same\n    filters into your configuration, which makes them more visible\n    and easier to maintain.\n\n    `MangleAgents` level values are interpreted as follows. Examples\n    are shown with the assumption that user agent include, exclude\n    and group filters are empty.\n\n    * Level `0`: At this level user agent values are not modified\n      and are reported as they appear in the log file.\n\n      * _Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)_\n      * _Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0_\n\n    * Levels `1`, `2`: At these levels user agent arguments are reported\n      as individual arguments separated with `; ` sequences.\n\n      * _Mozilla/5.0; compatible; Googlebot/2.1; +http://www.google.com/bot.html_\n      * _Mozilla/5.0; Windows NT 10.0; Win64; x64; rv:100.0; Gecko/20100101; Firefox/100.0_\n\n\n    * Level `3`: At this level product versions are truncated to the\n      major version.\n\n      * _Mozilla/5; compatible; Googlebot/2; +http://www.google.com/bot.html_\n      * _Mozilla/5; Windows NT 10.0; Win64; x64; rv:100.0; Gecko/20100101; Firefox/100_\n\n    * Level `4`: At this level product versions are removed.\n    \n      * _Mozilla; compatible; Googlebot; +http://www.google.com/bot.html_\n      * _Mozilla; Windows NT 10.0; Win64; x64; rv:100.0; Gecko; Firefox_\n\n    * Level `5`: At this level URL tokens are removed.\n    \n      * _Mozilla; compatible; Googlebot_\n      * _Mozilla; Windows NT 10.0; Win64; x64; rv:100.0; Gecko; Firefox_\n      \n    In addition to mangle levels described above, you can use\n    `IncludeAgentArgs` and `ExcludeAgentArgs` to remove individual\n    user agent arguments, regarless of their type.\n\n    These filters work the same way as search argument filters and\n    when text without an asterisk is specified, the entire argument\n    must match. For example `ExcludeAgentArgs KHTML` will not filter\n    out `KHTML, like Gecko`, but the one shown below will.\n\n        ExcludeAgentArgs    KHTML, like Gecko\n\n    `EnablePhraseValues` must be set to `yes` to allow spaces\n    in configuration values, like in this example.\n\n    Generic user agent arguments (i.e. not product versions\n    or URLs) may also be rewritten using `GroupAgentArgs`. For\n    example, to avoid fragmentation for various versions of Mac\n    OS 10, such as `Intel Mac OS X 10_15_7` and `Intel Mac\n    OS X 10_11_6`, this group agent argument filter may be used.\n\n        GroupAgentArgs\t\tIntel Mac OS X*\t\tIntel Mac OS X\n\n    `GroupAgentArgs` is ignored for product version and URL\n    arguments, so Edge product version `Edg/101.0.1210.53`\n    cannot be rewritten as `Edge` or `Edge/101.0.1210.53`.\n\n    User agent values often do not follow HTTP RFC guidelines\n    and may have product versions in field comments, which is\n    the text between `(` and `)` characters, or may use product\n    versions for arbitrary text, such as `Version/7.0` or\n    `Language/zh_CN`. You may want to experiment with include,\n    exclude and group user agent argument filter that work\n    best for you. Keep in mind, however, that changing filters\n    permanently should not be done in the middle of the month\n    in the log processing cycle because it will produce\n    arbitrarily fragmented groupings.\n\n    Command line argument: `-M`\n\n* `SearchEngine`\n\n    This keyword allows specification of search engines and\n    their query strings.  Search strings are obtained from\n    the referrer field in the record, and in order to work\n    properly, the Webalizer needs to know what query strings\n    different search engines use.  The `SearchEngine` allows\n    you to specify the search engine and it's query string\n    to parse the search string from.  The line is formatted\n    as:  `SearchEngine engine-string query-string`  where\n    `engine-string` is a substring for matching the search\n    engine with, such as `yahoo.com` or `altavista`.  The\n    `query-string` is the unique query string that is added\n    to the URL for the search engine, such as `search=` or\n    `MT=` with the actual search strings appended to the\n    end. There is no command line option for this keyword.\n\n    This configuration parameter supports additional syntax\n    to be able to combine various search terms.\n\n    For example, somebody using Google to find pages that\n    contain all words and to be a certain file type (e.g. PDF)\n    use different search arguments compared to a usual search.\n    Following configuration allows Stone Steps Webalizer to\n    process such cases using this configuration:\n\n        SearchEngine    www.google.     as_q=All Words\n        SearchEngine    www.google.     as_filetype=File Type\n\n    All matching search strings will be reported on one\n    line, separated by the term qualifier.\n\n    For example, the following line describes that somebody\n    was looking for a PDF file containing words `webalizer`\n    and `apache`:\n\n        [All Words] webalizer apache [File Type] pdf\n\n    For performance reasons, all search terms for the same\n    site (e.g. `www.google.`) must be grouped. The first line\n    with the mismatching domain name pattern will cancel\n    further search.\n\n* `Incremental`\n\n    This allows incremental processing to be enabled or disabled.\n    Incremental processing allows processing partial logs without\n    the loss of detail data from previous runs in the same month.\n    This feature saves the `internal state` of the program so that\n    it may be restored in following runs.  See the section above\n    titled \"Incremental Processing\" for additional information.\n    The value may be `yes` or `no`, with the default being `yes`.\n\n* `ApacheLogFormat`\n\n    Defines the format Stone Steps Webalizer will use when\n    parsing Apache log files. This configuration variable will\n    only be evaluated when the current log file type is Apache.\n\n    Default value: none\n\n* `BundleGroups`\n\n    Controls whether grouped items in the reports should be\n    bundled together at the beginning of the report or not.\n    Bundling groups together makes it easier to stack them up\n    against each other.\n\n    Default value: `yes`\n\n* `ConvURLsLowerCase`\n\n    Controls whether URL characters will be converted to lower\n    case (`yes`) or not (`no`).\n\n    Default value: `no`\n\n* `DownloadPath`\n\n    Lists a URL path that Stone Steps Webalizer will use to\n    detect file downloads for the downloads report.\n\n    For example, if you would like to track downloads of a file\n    called `util.zip` located in the `/downloads/` directory,\n    add the following entry to `webalizer.conf`:\n\n        DownloadPath    /downloads/util.zip    Utility Download\n\n    Wildcard characters (*) may be used at the beginning and the\n    end of the path to list partial paths. Note that query\n    strings are ignored when logged URL's are compared with\n    `DownloadPath` entries. Multiple `DownloadPath` entries may be\n    used to track more than one path.\n\n    Default value: none\n\n* `DownloadTimeout`\n\n    Maximum number of seconds between consecutive partial\n    download requests that are counted towards the same download\n    job.\n\n    Default value: `180`\n\n* `EnablePhraseValues`\n\n    If this configuration parameter is set to yes, Stone Steps\n    Webalizer will treat the tab character as a name/value\n    separator when parsing two-part configuration entries, such\n    as `GroupAgent` or `SearchEngine` and will ignore spaces\n    embedded in the values. For example:\n\n        Mozilla/4.0 (compatible; MSIE 6* \u003ctab\u003e Internet Explorer v6\n        ^----------- value ------------^       ^------ name ------^\n\n    Default value: `no`\n\n* `GroupURLDomains`\n\n    Squid log files contain absolute URLs, along with fully-\n    qualified domain names. `GroupURLDomains` may be used to group\n    these domains in the URL report. The value of this\n    configuration parameter is the number of domain labels, past\n    the top-level one, to report.\n\n    For example, if `GroupURLDomains` is set to `1`, two labels will\n    be reported (e.g. `stonesteps.ca`); if this parameter is set to\n    `2`, three labels will be reported (e.g. `forums.stonesteps.ca`);\n    and so on. If `GroupURLDomains` is set to `0`, no this type of\n    grouping will not be performed.\n\n    Default value: `0`\n\n* `HistoryLength`\n\n    Defines the maximum number of months reported on the main\n    index page. The minimum number of months in the history is\n    `12`.\n\n    Default value: `24`\n\n* `HttpPort`\n\n    Defines the TCP/IP port used by the web server to serve HTTP\n    requests.\n\n    Default value: `80`\n\n* `HttpsPort`\n\n    Defines the TCP/IP port used by the web server to serve\n    HTTPS requests.\n\n    Default value: `443`\n\n* `Include`\n\n    Instructs Stone Steps Webalizer to process the specified\n    configuration file after the main configuration file has\n    been processed. This parameter may optionally be followed by\n    the domain name to make the include directive domain\n    specific.\n\n    For example, the following include directive will only be\n    processed if the domain name specified with the `-n` option\n    is `www.a.com`.\n\n        Include   c:\\tools\\webalizer\\a.conf    www.a.com\n\n    Default value: none\n\n* `IncludeSearchArg`, `ExcludeSearchArg`\n\n    Define include and exclude search arguments filters. Each\n    configuration parameter is expected to be either a complete\n    or a partial name of a search argument to include or\n    exclude. A single asterisk may be used to include or exclude\n    all search arguments. Multiple include/exclude directives\n    may be used if more than one search argument is to be\n    included or excluded. The include filter takes precedence\n    over the exclude filter.\n\n    Unlike other include/ignore filters, non-wildcard `IncludeSearchArg`\n    and `ExcludeSearchArg` values are not treated as sub-strings\n    and must match search argument names exactly in order for\n    the corresponding filter to be activated.\n\n    For example, the following two exclude filters will remove\n    search arguments `x` and `y`, which are commonly submitted by\n    browsers if image-based buttons are used on the page, but\n    will not affect search arguments that contain characters `x`\n    or `y`, such as query or xpath.\n\n        ExcludeSearchArg   x\n        ExcludeSearchArg   y\n\n    Default value: none\n\n* `IncludeAgentArgs`, `ExcludeAgentArgs`\n\n    These filters are implemented in the same way as are include\n    and exclude search argument filters in that each filter without\n    an asterisk must match the entire argument.\n\n* `GroupAgentArgs`\n\n    This filter makes it possible to rename matching user agent\n    arguments that are not classified as product versions or URLs.\n    For example, this filter replaces \"Windows NT 5.1\" with \"Windows\n    XP\" in the final output:\n\n        GroupAgentArgs   Windows NT 5.1  Windows XP\n\n    Group filters are not applied against product version and URL\n    arguments. In other words, \"Edg/*\" cannot be replaced with\n    \"Edge\".\n\n    Note that if the pattern contains spaces (e.g. Windows NT 5.1),\n    there must be a tab character between the pattern and the alias\n    and `EnablePhraseValues` must be set to `yes`. Otherwise, the\n    first space will end the pattern (in this example, the pattern\n    will end after the first word Windows).\n\n* `LanguageFile`\n\n    Specifies a fully-qualified path to the language file.\n\n* `MonthlyTotals`\n\n    Specifies whether Stone Steps Webalizer should generate the\n    monthly totals report or not.\n\n    Default value: `yes`\n\n* `NginxLogFormat`\n\n    Defines the format Stone Steps Webalizer will use when\n    parsing Nginx log files. This configuration variable will\n    only be evaluated when the current log file type is Nginx.\n\n    Default value: none\n\n* `NoDefaultIndexAlias`\n\n    Many web servers make it possible to configure a default\n    document for each directory. If a user requests a URL that\n    is a directory (e.g. `http://127.0.0.1/books/`), the default\n    document from that directory will be served.\n\n    For example, IIS is usually configured with default.htm as a\n    default document; Apache, as well as many other Unix-originated\n    web servers, is configured to serve index.html as a default\n    document. Stone Steps Webalizer, by default, adds index. to\n    the list of default documents. When processing a URL, Stone\n    Steps Webalizer checks if the requested file matches any\n    entries in the default document list and if it does, strips\n    off the file name from the URL.\n\n    This feature allows Stone Steps Webalizer to avoid\n    fragmenting default document statistics if the same document\n    was requested using multiple aliases (e.g. `index.html`,\n    `index.php`, etc). However, in some cases, it is undesirable\n    to use index. as a default alias (e.g. if there is a\n    directory named `index.ext`). Setting `NoDefaultIndexAlias` to\n    `yes` prevents Stone Steps Webalizer from adding index. to the\n    default document list.\n\n    Default value: `no`\n\n* `SortSearchArgs`\n\n    Controls whether search arguments will be sorted\n    alphabetically or not. Sorting search arguments helps\n    defragmenting URL reports.\n\n    Default value: `yes`\n\n* `SpamReferrer`\n\n    Each entry lists a keyword identifying the visitor as a\n    spammer. Multiple values may be used to specify more than\n    one keyword. Once identified as a spammer, visitor's IP\n    address will be remembered for the rest of the month and any\n    requests originating from this IP address will be treated as\n    spam.\n\n    Default value: none\n\n* `UpstreamTraffic`\n\n    Indicates whether to track upstream data transfers (i.e.\n    uploads) or not. Note that upstream and downstream transfer\n    amounts are not tracked separately - their values are added\n    together and shown as Transfer.\n\n    Default value: `no`\n\n* `Robot`\n\n    Defines a pattern used to identify robot user agents, such\n    as search engines. The pattern may contain a leading or a\n    trailing wildcard character (`*`) to indicate that the pattern\n    should be matched from the end or from the beginnning of\n    the string, respectively. Otherwise, the pattern will be\n    treated as a sub-string. Leading wildcards are not very\n    useful for filtering user agents.\n\n    For example, `msnbot/*` will match the first user agent and\n    `Googlebot/` will match the second one.\n\n        msnbot/1.0 ( http://search.msn.com/msnbot.htm)\n        Mozilla/5.0 (compatible; Googlebot/2.1;)\n\n    Robot entries may contain aliases that will be used instead\n    of patterns when grouping robot entries. For example:\n\n        Robot   Mediapartners-Google*     Google Adsense\n        Robot   msnbot*                   MSN Live Search\n\n    Default value: none\n\n* `TargetURL`\n\n    Visitors who browse a website and then purchase, download\n    something or just visit a designated page are called\n    converted visitors. Converted visitors may be tracked by\n    specifying target URL patterns in the configuration file.\n    Each `TargetURL` entry designates a URL pattern. For example,\n\n        TargetURL    /orders/receipt.asp*\n\n    This entry instructs Stone Steps Webalizer to interpret\n    the URL that begins with `/orders/receipt.asp` to be treated\n    as a target URL.\n\n    Multiple TargetURL entries can be used to specify more\n    than one pattern.\n\n    Default value: none\n\n* `TargetDownload`\n\n    If downloads are being tracked using `DownloadPath`, setting\n    `TargetDownload` to `yes` will instruct Stone Steps Webalizer\n    to treat those requests that matched `DownloadPath` as if they\n    had a corresponding TargetURL entry. This improves overall\n    performance by reducing the number of target URL entries and\n    simplifies configuration.\n\n    Default value: `yes`\n\n* `ClassicKBytes`\n\n    Starting with v4.2, Stone Steps Webalizer shows transfer amounts in\n    reports and charts as numbers with a unit suffix, such as KB, MB, GB,\n    etc., as opposed to the traditional numbers of kilobytes. If you would\n    like to revert to the previous behavior, set `ClassicKBytes` to `yes` in\n    the configuration. You will also need to change the word Transfer to\n    KBytes in the language file, so report titles look the same as before\n    v4.2.\n\n    Default value: `no`\n\n* `DecimalKBytes`\n\n    Traditionally, the Webalizer interpreted one kilobyte as 1024 bytes.\n    You can set DecimalKBytes to `yes` to compute transfer amounts in\n    multiples of 1000 bytes.\n\n    Default value: `no`\n\n* `PageTitle`\n\n    Associates a page title with a URL pattern. If a URL in the\n    Top N URLs and Entry/Exit URL reports match some pattern,\n    the pattern name will be rendered instead of the URL. For\n    example, blog pages might be set up like this:\n\n        PageTitle     /post/12*   Wild Life Photography\n        PageTitle     /post/34*   Action Photography\n\n    In the All URLs report the matching pattern name will not\n    be rendered instead of the URL text, but instead will be\n    added as a URL title, so hovering over that entry will show\n    the title. This way URLs are shown more consistently in\n    a tabular report with a lot of other URLs that are not\n    titled.\n\n    The pattern syntax is the same as for hide/ignore options and\n    if one is specified without an asterisk, it will match any\n    text within the URL. Trailing asterisk, like that shown above,\n    will match URLs from the beginning. Note, however, that the\n    order of entries matches and longer ones should be listed\n    first.\n\n    For example, an entry with an ID `1` and a trailing asterisk\n    would mask the following ID `18` and the latter would never\n    appear in the report:\n\n        PageTitle     /post/1*    Wild Life Photography\n        PageTitle     /post/18*   Action Photography\n\n    Reordering `18*` before `1*` will assign correct titles in\n    the report, but will `1*` will still match other sequences\n    starting with `1` if they are not explicitly listed as page\n    titles (e.g. `/post/19`). Alternatively, you can use a leading\n    asterisk, which will work for cases above, but may misfire\n    for unrelated URLs ending with the same sequence, such as\n    login redirects (e.g. `/login/?ref=/post/19` will be titled\n    with the pattern `*/post/19`).\n\n    Note that without an asterisk the pattern will be match any\n    emedded text, such as `/post/1` in a URL `/?ref=/post/123`.\n\n    URL patterns are matched against normalized URLs, so if you\n    want to match some non-ASCII character, use the actual\n    character and not a URL-encoded sequence for that character.\n    See the URL Normalization section for details.\n\n    Page titles can be styled in `webalizer.css`. By default\n    report table cells containing page titles are styled to\n    insert a Unicode page character before title text.\n\n### DNS Resolution Configuration Options\n\n* `DNSCache`\n\n    Specifies the DNS cache filename.  This name is relative\n    to the default output directory unless an absolute name\n    is given (ie: starts with `/`). If `DNSCache` is not\n    specified, but `GeoIPDBPath` is, DNS resolver workers will\n    still be created to lookup country codes during log file\n    processing.\n\n* `ASNDBPath`\n\n    A fully-qualified path to a MaxMind's Autonomous System\n    numbers (ASN) database. A free ASN database may be downloaded\n    from this location:\n\n    https://dev.maxmind.com/geoip/geoip2/geolite2/\n\n    When ASN database is configured, ASN columns will be added\n    to the Hosts and Downloads reports and an additional Top ASN\n    report will be generated, as well as a tab-separated file\n    containing ASN entries. Use TopASN and `DumpASN` configuration\n    parameters to control whether to generate a top ASN report\n    and to generate a tab-separated ASN file.\n\n* `GeoIPDBPath`\n\n    This configuration parameter is expected to be a fully-\n    qualified path to the MaxMind's GeoIP Country or GeoIP\n    City database file in the binary format. The database may\n    be downloaded at the following URL:\n\n    http://www.maxmind.com/app/geoip_country\n\n    Less precise, but free GeoIP databases are available at\n    this location:\n\n    http://dev.maxmind.com/geoip/geoip2/geolite2/\n\n    Setting `GeoIPDBPath` will instruct Stone Steps Webalizer\n    to use the information in the GeoIP database to generate\n    the country report. If this parameter is not set or if\n    it points to a non-existent or invalid GeoIP database,\n    Stone Steps Webalizer will use domain name suffixes,\n    such as `.ca` or `.jp`, to generate the country report.\n\n* `GeoIPCity`\n\n    Value `yes` will instruct Stone Steps Webalizer to look up\n    country and city names in the GeoIP database, while value\n    `no` will disable city look-ups. Note that you need GeoIP\n    City database for this parameter to have any effect.\n\n    Default value: `yes`\n\n* `DNSChildren`\n\n    Number of DNS child processes to use for reverse DNS and GeoIP\n    lookups. If specified, `DNSCache` or `GeoIPDBPath` must also be\n    specified. If you do not wish a DNS cache file to be generated,\n    omit DNSCache to disable DNS resolution. A value `0` will\n    disable DNS and GeoIP look-ups.\n\n* `DNSCacheTTL`\n\n    Specifies Time To Live (TTL) in days for DNS cache entries.\n    In most cases it is reasonable to set this value to 30 days.\n\n    Default value: `30`\n\n* `DNSLookups`\n\n    Specifies whether to resolve host IP addresses to domain\n    names (yes) or not (no) if `DNSCache` and `DNSChildren` are\n    configured to enable DNS components. When set to `no`,\n    DNS resolution is disabled, but the `DNSCache` database is\n    still used to preserve some IP address information, such\n    as whether some IP address is marked as a spammer, from\n    month to month.\n\n    Default: `yes`\n\n* `AcceptHostNames`\n\n    Specifies whether to accept host names instead of IP addresses\n    in log files or not. Configuring your web server to resolve\n    IP addresses to host names will slow down the server. Lack\n    of IP addresses also will disable address-based visitor\n    country identification.\n\n    Default value: `no`\n\n* `ExternalMapURL`\n\n    Specifies a fully-qualified URL of any map service that can\n    interpret latitude and longitude expressed as signed decimal\n    degrees. Use `{{lat}}` and `{{lon}}` to pass coordinates to the\n    map service. For example, use this URL to show a map centered\n    on the location of the IP address in Google Maps:\n\n    https://www.google.ca/maps/@{{lat}},{{lon}},12z\n\n### Graph Configuration\n\n* `GraphBackgroundAlpha`\n\n    Sets the transparency of the background of graph images, in\n    percent. The value of `100` makes background completely\n    transparent, while the value of 0 makes it completely\n    opaque. Making graph backgrounds transparent makes it\n    possible to use another image, such as a logo, a gradient or\n    a pattern as a graph background. `GraphTrueColor` must be set\n    to yes in order for `GraphBackgroundAlpha` to work.\n\n    Default value: `0`\n\n* `GraphBorderWidth`\n\n    Defines the width of the 3D border around image graphs in\n    pixels. If set to zero, graph images are generated without a\n    border. This value cannot be greater than `8`.\n\n    Default value: `0`\n\n* `GraphFontNormal`, `GraphFontBold`\n\n    Define fully-qualified paths to TrueType font files that\n    Stone Steps Webalizer will use when creating graphs. If\n    these paths are not specified, Stone Steps Webalizer will\n    use default raster fonts.\n\n    Default value: none\n\n* `GraphBackgroundColor`\n\n    Defines the background color for all graphs generated by\n    Stone Steps Webalizer. The value must be specified as six\n    hexadecimal digits, two for each color - red, green and\n    blue.\n\n    Default value: `C0C0C0`\n\n* `GraphFontMedium`\n\n    Specifies the size, in points, of the small and medium fonts\n    used in graphs. The medium font is used for graph titles and\n    country names in the country report.\n\n    Default value: `9.5`\n\n* `GraphFontSmall`\n\n    Specifies the size, in points, of the small font used in\n    graphs. The small font is used for graph legends (e.g. Hits,\n    Visits, etc) and axis markers.\n\n    Default value: `8`\n\n* `GraphFontSmoothing`\n\n    Specifies whether Stone Steps Webalizer will create graphs\n    using smoothed TrueType fonts. This value is ignored if\n    default raster fonts are used.\n\n    Default value: `yes`\n\n* `GraphGridlineColor`\n\n    Defines the color of graph gridlines. The value must be\n    specified as six hexadecimal digits, two for each color -\n    red, green and blue.\n\n    Default value: `808080`\n\n* `GraphHitsColor`\n\n    Defines the color of the graph and legend associated with\n    Hits. The value must be specified as six hexadecimal digits,\n    two for each color - red, green and blue.\n\n    Default value: `00805C`\n\n* `GraphHostsColor`\n\n    Defines the color of the graph and legend associated with\n    Hosts. The value must be specified as six hexadecimal\n    digits, two for each color - red, green and blue.\n\n    Default value: `FF8000`\n\n* `GraphLegendColor`\n\n    Defines the base color of the X-axis legend. The value must\n    be specified as six hexadecimal digits, two for each color -\n    red, green and blue.\n\n    Default value: `000000`\n\n* `GraphOutlineColor`\n\n    Defines the color of the graph bar outlines. The value must\n    be specified as six hexadecimal digits, two for each color -\n    red, green and blue.\n\n    Default value: `000000`\n\n* `GraphPagesColor`\n\n    Defines the color of the graph and legend associated with\n    Pages. The value must be specified as six hexadecimal\n    digits, two for each color - red, green and blue.\n\n    Default value: `00C0FF`\n\n* `GraphTitleColor`\n\n    Defines the color of the graph title. The value must be\n    specified as six hexadecimal digits, two for each color -\n    red, green and blue.\n\n    Default value: `0000FF`\n\n* `GraphVisitsColor`\n\n    Defines the color of the graph and legend associated with\n    Visits. The value must be specified as six hexadecimal\n    digits, two for each color - red, green and blue.\n\n    Default value: `FFFF00`\n\n* `GraphTransferColor`\n\n    Defines the color of the graph and legend associated with\n    Transfer. The value must be specified as six hexadecimal\n    digits, two for each color - red, green and blue.\n\n    Default value: `FF0000`\n\n* `GraphWeekendColor`\n\n    Defines the color of the weekend days in the monthly traffic\n    report. The value must be specified as six hexadecimal\n    digits, two for each color - red, green and blue.\n\n    Default value: `00805C`\n\n* `GraphShadowColor`\n\n    Defines the color of the legend shadow for all graphs\n    generated by Stone Steps Webalizer. The value must be\n    specified as six hexadecimal digits, two for each color -\n    red, green and blue.\n\n    Default value: `333333`\n\n* `GraphTitleColor`\n\n    Defines the color of graph titles. The value must be\n    specified as six hexadecimal digits, two for each color -\n    red, green and blue.\n\n    Default value: `0000FF`\n\n* `GraphTrueColor`\n\n    Specifies whether Stone Steps Webalizer will create\n    TrueColor or palette-based graph images. TrueColor images\n    are larger in size, but are of better quality, especially if\n    font smoothing is turned on.\n\n    Default value: `no`\n\n* `JavaScriptCharts`\n\n    Specifies the type the the JavaScript chart package to use.\n    Only Highcharts is supported at the moment. By default this\n    value is empty and all charts are rendered as PNG images.\n\n    If you configure this value, you also need to configure the\n    JavaScript directory via `HTMLJsPath`.\n\n    Please note that Highcharts is not an Open Source package\n    and may be used without buying a license only for non-commercial\n    purposes. Read Highcharts` page for additional information\n    about their licensing before enabling Highcharts in the reports:\n\n    https://shop.highsoft.com/faq#Non-Commercial-0\n\n    For more information about the JavaScript charts package used\n    in this implementation see this page:\n\n    https://www.highcharts.com/products/highstock\n\n* `JavaScriptChartsPath`\n\n    JavaScripts charts by default will use implementation scripts\n    from the 3rd-party chart vendor's location. If you would like\n    to serve charts scripts from your servers or use some alternative,\n    JavaScript charts integration, specify as many of these variables\n    as you need in the configuration file and each will be output in\n    the head element of each report.\n\n### Database Configuration Options\n\n* `BatchProcessing`, `Batch`\n\n    Instructs Stone Steps Webalizer to run in a batch mode,\n    which avoids generating report files at the end of each\n    run. Once the last log file has been processed, a\n    monthly report may be generated with the command line\n    argument `--prepare-report`.\n\n    Default value: `no`  \n    Command line argument: `--batch`\n\n* `DbDirect`\n\n    Configures Berkeley DB not to use the operating system\n    caching and use only the internal Berkeley DB caching\n    mechanism. This may help reduce memory footprint on some\n    systems.\n\n    Default value: `no`\n\n* `DbSeqCacheSize`\n\n    Is the number of cached DB sequence numbers used by\n    Stone Steps Webalizer. The default value of 100 is\n    sufficient in most cases.\n\n* `DbCacheSize`\n\n    This configuration value is used as a guiding number to\n    limit the amount of memory used by Stone Steps Webalizer.\n    The specified value is not used as a hard memory limit,\n    but rather as a base value to initialize various components,\n    such as Berkeley DB cache and internal memory tables for\n    log file items, such as hosts and URLs. The actual amount\n    of memory used may be about three-four times as much, but\n    it should level at some point. You may need to experiment\n    with different values to arrive at an acceptable limit.\n    Values may be suffixed with K, M or G for kilo, mega and\n    giga multipliers. The minimum value is `1 MB`.\n\n    Default value: `50 MB`\n\n* `DbPath`\n\n    Specifies a fully-qualified directory path where the state\n    database will be created.\n\n    Default value: output directory\n\n* `DbName`\n\n    Sets the name of the database file.\n\n    Default value: `webalizer`\n\n* `DbExt`\n\n    Sets the extension of the database file.\n\n    Default value: `db`\n\n### Top Table Keywords\n\n* `TopAgents`\n\n    This allows you to specify how many \"Top\" user agents are\n    displayed in the \"Top User Agents\" table.  The default\n    is 15.  If you do not want to display user agent statistics,\n    specify a value of zero (`0`).  The display of user agents\n    will only work if your web server includes this information\n    in its log file (ie: a combined log format file).\n\n    Command line argument: `-A`\n\n* `AllAgents`\n\n    Will cause a separate HTML page to be generated for all\n    normally visable User Agents.  A link will be added to\n    the bottom of the \"Top User Agents\" table if enabled.\n    Value can be either `yes` or `no`, with `no` being the\n    default.\n\n* `TopCountries`\n\n    This allows you to specify how many \"Top\" countries are\n    displayed in the \"Top Countries\" table.  The default is\n`30`.  If you want to disable the countries table, specify\n    a value of zero (`0`).\n\n    Command line argument: `-C`\n\n* `TopCities`\n\n    Limits the number of cities listed in the Top Cities report.\n    This report is generated only if GeoIP is configured and if\n    GeoIPCity is set to `yes`. Set `TopCities` to zero if you would\n    like to disable the city report, but show city names in other\n    reports.\n\n    Default value: `30`\n\n* `TopReferrers`\n\n    This allows you to specify how many \"Top\" referrers are\n    displayed in the \"Top Referrers\" table.  The default is\n    30.  If you want to disable the referrers table, specify\n    a value of zero (0).  The display of referrer information\n    will only work if your web server includes this information\n    in its log file (ie: a combined log format file).\n\n    Command line argument: `-R`\n\n* `AllReferrers`\n\n    Will cause a separate HTML page to be generated for all\n    normally visable Referrers.  A link will be added to the\n\"Top Referrers\" table if enabled.  Value can be either\n`yes` or `no`, with `no` being the default.\n\n* `TopHosts`\n\n    This allows you to specify how many \"Top\" hosts are\n    displayed in the \"Top Hosts\" table.  The default is 30.\n    If you want to disable the hosts table, specify a value\n    of zero (0).\n\n    Command line argument: `-S`\n\n* `TopKHosts`\n\n    Identical to `TopSites`, except for the `by KByte` table.\n    Default is 10.  No command line switch for this one.\n\n* `AllHosts`\n\n    Will cause a separate HTML page to be generated for all\n    normally visible Sites.  A link will be added to the\n    bottom of the \"Top Sites\" table if enabled.  Value can\n    be either `yes` or `no`, with `no` being the default.\n\n* `TopURLs`\n\n    This allows you to specify how many \"Top\" URL's are\n    displayed in the \"Top URL's\" table.  The default is `30`.\n    If you want to disable the URL's table, specify a value\n    of zero (`0`).\n\n    Command line argument: `-U`\n\n* `TopKURLs`\n\n    Identical to TopURLs, except for the `by KByte` table.\n    Default is `10`.  No command line switch for this one.\n\n* `AllURLs`\n\n    Will cause a separate HTML page to be generated for all\n    normally visible URLs.  A link will be added to the\n    bottom of the \"Top URLs\" table if enabled.  Value can\n    be either `yes` or `no`, with `no` being the default.\n\n* `TopEntry`\n\n    Allows you to specify how many \"Top Entry Pages\" are\n    displayed in the table.  The default is `10`.  If you\n    want to disable the table, specify a value of zero (0).\n\n    Command line argument: `-e`\n\n* `TopExit`\n\n    Allows you to specify how many \"Top Exit Pages\" are\n    displayed in the table.  The default is `10`.  If you\n    want to disable the table, specify a value of zero (`0`).\n\n    Command line argument: `-E`\n\n* `TopSearch`\n\n    Allows you to specify how many \"Top Search Strings\" are\n    displayed in the table.  The default is `20`.  If you\n    want to disable the table, specify a value of zero (`0`).\n    Only works if using combined log format (ie: contains\n    referrer information).\n\n* `TopUsers`\n\n    This allows you to specify how many \"Top\" usernames are\n    displayed in the \"Top Usernames\" table.  Usernames are\n    only available if you use http authentication on your\n    web server. The default value is `20`. If you want to\n    disable the Username table, specify a value of zero (`0`).\n\n* `AllUsers`\n\n    Will cause a separate HTML page to be generated for all\n    normally visible user names.  A link will be added to the\n    bottom of the \"Top Usernames\" table if enabled.  Value\n    can be either `yes` or `no`, with `no` being the default.\n\n* `AllSearchStr`\n\n    Will create a separate HTML page to be generated for all\n    normally visable Search Strings.  A link will be added\n    to the bottom of the \"Top Search Strings\" table if\n    enabled.  Value can be either `yes` or `no`, with `no`\n    being the default.\n\n* `AllDownloads`\n\n    If this configuration parameter ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstonestepsinc%2Fstonestepswebalizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstonestepsinc%2Fstonestepswebalizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstonestepsinc%2Fstonestepswebalizer/lists"}