{"id":16079125,"url":"https://github.com/pat/clogger-rack2","last_synced_at":"2026-01-11T03:34:13.134Z","repository":{"id":66006483,"uuid":"91932140","full_name":"pat/clogger-rack2","owner":"pat","description":"Patched Clogger that supports Rack v2","archived":false,"fork":false,"pushed_at":"2017-05-21T04:31:48.000Z","size":172,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-09T10:42:36.501Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pat.png","metadata":{"files":{"readme":"README","changelog":null,"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":"2017-05-21T04:02:39.000Z","updated_at":"2017-05-21T04:03:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"58e1f64b-f338-41e9-add7-ea43d3fa285c","html_url":"https://github.com/pat/clogger-rack2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pat%2Fclogger-rack2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pat%2Fclogger-rack2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pat%2Fclogger-rack2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pat%2Fclogger-rack2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pat","download_url":"https://codeload.github.com/pat/clogger-rack2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233408223,"owners_count":18671812,"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":[],"created_at":"2024-10-09T10:40:44.677Z","updated_at":"2025-09-17T16:32:22.865Z","avatar_url":"https://github.com/pat.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"= clogger - configurable request logging for Rack\n\nclogger is Rack middleware for logging HTTP requests.  The log format\nis customizable so you can specify exactly which fields to log.\n\n== FEATURES\n\n* highly customizable with easy-to-read nginx-like log format variables.\n\n* pre-defines Apache Common Log Format, Apache Combined Log Format and\n  Rack::CommonLogger (as distributed by Rack 1.0 and 1.1) formats.\n  See Clogger::Format for the predefined formats.\n\n* Untrusted values are escaped (all HTTP headers, request URI components)\n  to make life easier for HTTP log parsers. The following bytes are escaped:\n\n    ' (single quote)\n    \" (double quote)\n    all bytes in the range of \\x00-\\x1F\n\n* multi-instance capable and (optionally) reentrant.  You can use\n  clogger in a multi-threaded server, and even multiple cloggers logging\n  to different locations and different formats in the same process.\n\n* Pure Ruby version for non-MRI versions of Ruby (or via CLOGGER_PURE=1\n  in the environment).  The optional C extension is loaded by default\n  under C Ruby and under Rubinius, too.\n\n== SYNOPSIS\n\nclogger may be loaded as Rack middleware in your config.ru:\n\n  # ENV['CLOGGER_PURE'] = '1' # uncomment to disable C extension\n  require \"clogger\"\n  use Clogger,\n      :format =\u003e :Combined,\n      :path =\u003e \"/path/to/log\",\n      :reentrant =\u003e true\n  run YourApplication.new\n\nIf you're using Rails 2.3.x or later, in your config/environment.rb\nsomewhere inside the \"Rails::Initializer.run do |config|\" block:\n\n  config.middleware.use 'Clogger',\n      :format =\u003e :Combined,\n      :path =\u003e \"/path/to/log\",\n      :reentrant =\u003e false\n\nInstead of specifying a :path, you may also specify a :logger object\nthat receives a \"\u003c\u003c\" method:\n\n  use Clogger, :logger=\u003e $stdout, :reentrant =\u003e true\n  run YourApplication.new\n\n== VARIABLES\n\n* $http_* - HTTP request headers (e.g. $http_user_agent)\n* $sent_http_* - HTTP response headers (e.g. $sent_http_content_length)\n* $content_length - HTTP request body size\n  ($http_content_length is not allowed by Rack)\n* $content_type - HTTP request content type\n  ($http_content_type is not allowed by Rack)\n* $cookie_* - HTTP request cookie (e.g. $cookie_session_id)\n  Rack::Request#cookies must have been used by the underlying application\n  to parse the cookies into a hash.\n* $request_method - the HTTP request method (e.g. GET, POST, HEAD, ...)\n* $path_info - path component requested (e.g. /index.html)\n* $query_string - request query string (not including leading \"?\")\n* $request_uri - the URI requested ($path_info?$query_string)\n* $request - the first line of the HTTP request\n  ($request_method $request_uri $http_version)\n* $request_time, $request_time{PRECISION} - time taken for request\n  (including response body iteration).  PRECISION defaults to 3\n  (milliseconds) if not specified but may be specified anywhere from\n  0(seconds) to 6(microseconds).\n* $time_iso8601 - current local time in ISO 8601 format,\n  e.g. \"1970-01-01T00:00:00+00:00\"\n* $time_local - current local time in Apache log format,\n  e.g. \"01/Jan/1970:00:00:00 +0000\"\n* $usec - current time in seconds.microseconds since the Epoch\n* $msec - current time in seconds.milliseconds since the Epoch\n* $body_bytes_sent - bytes in the response body (Apache: %B)\n* $response_length - body_bytes_sent, except \"-\" instead of \"0\" (Apache: %b)\n* $remote_user - HTTP-authenticated user\n* $remote_addr - IP of the requesting client socket\n* $status - three-digit HTTP status code (e.g. 200, 404, 302)\n* $ip - X-Forwarded-For request header if available, $remote_addr if not\n* $pid - process ID of the current process\n* $e{Thread.current} - Thread processing the request\n* $e{Actor.current} - Actor processing the request (Revactor or Rubinius)\n* $env{variable_name} - any Rack environment variable (e.g. rack.url_scheme)\n\n== REQUIREMENTS\n\n* {Ruby}[https://www.ruby-lang.org/], {Rack}[https://rack.github.io/]\n\n== DEVELOPMENT\n\nThe latest development happens in git and is published to the following:\n\n   git clone git://bogomips.org/clogger.git\n   git clone git://repo.or.cz/clogger.git\n\nYou may also browse and download snapshot tarballs:\n\n* https://bogomips.org/clogger.git\n* http://repo.or.cz/w/clogger.git (gitweb)\n\nThe mailing list (see below) is central for coordination and\ndevelopment.  Patches should always be sent inline\n(git format-patch -M + git send-email) so we can reply to them inline.\n\n== CONTACT\n\nAll feedback (bug reports, user/development discussion, patches, pull\nrequests) go to the public mailing list.\n\n* mailto:clogger-public@bogomips.org\n\nDo not send HTML mail or attachments.  Do not top post.\n\nHomepage: https://bogomips.org/clogger/\n\n== INSTALL\n\nFor RubyGems users:\n\n  gem install clogger\n\nThere is an optional C extension that should be compatible with\nMatzRuby.  The extensions should automatically be disabled for users of\nother Ruby implementations, but be sure to let us know if that's not the\ncase.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpat%2Fclogger-rack2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpat%2Fclogger-rack2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpat%2Fclogger-rack2/lists"}