{"action":"closed","number":572,"pull_request":{"url":"https://api.github.com/repos/KeepSafe/aiohttp/pulls/572","id":47992809,"html_url":"https://github.com/KeepSafe/aiohttp/pull/572","diff_url":"https://github.com/KeepSafe/aiohttp/pull/572.diff","patch_url":"https://github.com/KeepSafe/aiohttp/pull/572.patch","issue_url":"https://api.github.com/repos/KeepSafe/aiohttp/issues/572","number":572,"state":"closed","locked":false,"title":"Improve access logging","user":{"login":"redixin","id":103634,"avatar_url":"https://avatars.githubusercontent.com/u/103634?v=3","gravatar_id":"","url":"https://api.github.com/users/redixin","html_url":"https://github.com/redixin","followers_url":"https://api.github.com/users/redixin/followers","following_url":"https://api.github.com/users/redixin/following{/other_user}","gists_url":"https://api.github.com/users/redixin/gists{/gist_id}","starred_url":"https://api.github.com/users/redixin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/redixin/subscriptions","organizations_url":"https://api.github.com/users/redixin/orgs","repos_url":"https://api.github.com/users/redixin/repos","events_url":"https://api.github.com/users/redixin/events{/privacy}","received_events_url":"https://api.github.com/users/redixin/received_events","type":"User","site_admin":false},"body":"Introduce class AccessLogger. Instance of this class is\r\nconstructed by passing log_format, and used to log messages\r\naccording to this format.\r\n\r\nUsage:\r\n```python\r\n        log = logging.getLogger(\"spam\")\r\n        log_format = \"%a %{User-Agent}i\"\r\n        access_logger = AccessLogger(log, log_format)\r\n        access_logger.log(message, environ, response, transport, time)\r\n```\r\n\r\nUse this object in ServerHttpProtocol for logging.\r\n\r\nAlso closed #458","created_at":"2015-10-17T18:54:31Z","updated_at":"2015-10-22T09:05:03Z","closed_at":"2015-10-22T09:05:03Z","merged_at":"2015-10-22T09:05:03Z","merge_commit_sha":"ad8cf4e26f492ff12449e4931fae10b052941c7d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/KeepSafe/aiohttp/pulls/572/commits","review_comments_url":"https://api.github.com/repos/KeepSafe/aiohttp/pulls/572/comments","review_comment_url":"https://api.github.com/repos/KeepSafe/aiohttp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/KeepSafe/aiohttp/issues/572/comments","statuses_url":"https://api.github.com/repos/KeepSafe/aiohttp/statuses/9b0de234c0c8cbbaa132ae8545bb7e05c35aad51","head":{"label":"redixin:improve-logging","ref":"improve-logging","sha":"9b0de234c0c8cbbaa132ae8545bb7e05c35aad51","user":{"login":"redixin","id":103634,"avatar_url":"https://avatars.githubusercontent.com/u/103634?v=3","gravatar_id":"","url":"https://api.github.com/users/redixin","html_url":"https://github.com/redixin","followers_url":"https://api.github.com/users/redixin/followers","following_url":"https://api.github.com/users/redixin/following{/other_user}","gists_url":"https://api.github.com/users/redixin/gists{/gist_id}","starred_url":"https://api.github.com/users/redixin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/redixin/subscriptions","organizations_url":"https://api.github.com/users/redixin/orgs","repos_url":"https://api.github.com/users/redixin/repos","events_url":"https://api.github.com/users/redixin/events{/privacy}","received_events_url":"https://api.github.com/users/redixin/received_events","type":"User","site_admin":false},"repo":{"id":44318375,"name":"aiohttp","full_name":"redixin/aiohttp","owner":{"login":"redixin","id":103634,"avatar_url":"https://avatars.githubusercontent.com/u/103634?v=3","gravatar_id":"","url":"https://api.github.com/users/redixin","html_url":"https://github.com/redixin","followers_url":"https://api.github.com/users/redixin/followers","following_url":"https://api.github.com/users/redixin/following{/other_user}","gists_url":"https://api.github.com/users/redixin/gists{/gist_id}","starred_url":"https://api.github.com/users/redixin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/redixin/subscriptions","organizations_url":"https://api.github.com/users/redixin/orgs","repos_url":"https://api.github.com/users/redixin/repos","events_url":"https://api.github.com/users/redixin/events{/privacy}","received_events_url":"https://api.github.com/users/redixin/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/redixin/aiohttp","description":"http client/server for asyncio (PEP-3156)","fork":true,"url":"https://api.github.com/repos/redixin/aiohttp","forks_url":"https://api.github.com/repos/redixin/aiohttp/forks","keys_url":"https://api.github.com/repos/redixin/aiohttp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/redixin/aiohttp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/redixin/aiohttp/teams","hooks_url":"https://api.github.com/repos/redixin/aiohttp/hooks","issue_events_url":"https://api.github.com/repos/redixin/aiohttp/issues/events{/number}","events_url":"https://api.github.com/repos/redixin/aiohttp/events","assignees_url":"https://api.github.com/repos/redixin/aiohttp/assignees{/user}","branches_url":"https://api.github.com/repos/redixin/aiohttp/branches{/branch}","tags_url":"https://api.github.com/repos/redixin/aiohttp/tags","blobs_url":"https://api.github.com/repos/redixin/aiohttp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/redixin/aiohttp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/redixin/aiohttp/git/refs{/sha}","trees_url":"https://api.github.com/repos/redixin/aiohttp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/redixin/aiohttp/statuses/{sha}","languages_url":"https://api.github.com/repos/redixin/aiohttp/languages","stargazers_url":"https://api.github.com/repos/redixin/aiohttp/stargazers","contributors_url":"https://api.github.com/repos/redixin/aiohttp/contributors","subscribers_url":"https://api.github.com/repos/redixin/aiohttp/subscribers","subscription_url":"https://api.github.com/repos/redixin/aiohttp/subscription","commits_url":"https://api.github.com/repos/redixin/aiohttp/commits{/sha}","git_commits_url":"https://api.github.com/repos/redixin/aiohttp/git/commits{/sha}","comments_url":"https://api.github.com/repos/redixin/aiohttp/comments{/number}","issue_comment_url":"https://api.github.com/repos/redixin/aiohttp/issues/comments{/number}","contents_url":"https://api.github.com/repos/redixin/aiohttp/contents/{+path}","compare_url":"https://api.github.com/repos/redixin/aiohttp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/redixin/aiohttp/merges","archive_url":"https://api.github.com/repos/redixin/aiohttp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/redixin/aiohttp/downloads","issues_url":"https://api.github.com/repos/redixin/aiohttp/issues{/number}","pulls_url":"https://api.github.com/repos/redixin/aiohttp/pulls{/number}","milestones_url":"https://api.github.com/repos/redixin/aiohttp/milestones{/number}","notifications_url":"https://api.github.com/repos/redixin/aiohttp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/redixin/aiohttp/labels{/name}","releases_url":"https://api.github.com/repos/redixin/aiohttp/releases{/id}","created_at":"2015-10-15T13:12:36Z","updated_at":"2015-10-15T13:12:37Z","pushed_at":"2015-10-21T21:27:36Z","git_url":"git://github.com/redixin/aiohttp.git","ssh_url":"git@github.com:redixin/aiohttp.git","clone_url":"https://github.com/redixin/aiohttp.git","svn_url":"https://github.com/redixin/aiohttp","homepage":"http://aiohttp.readthedocs.org","size":4994,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"KeepSafe:master","ref":"master","sha":"649a50931b61c1017bbc1b65d7337b704227b8d1","user":{"login":"KeepSafe","id":1377248,"avatar_url":"https://avatars.githubusercontent.com/u/1377248?v=3","gravatar_id":"","url":"https://api.github.com/users/KeepSafe","html_url":"https://github.com/KeepSafe","followers_url":"https://api.github.com/users/KeepSafe/followers","following_url":"https://api.github.com/users/KeepSafe/following{/other_user}","gists_url":"https://api.github.com/users/KeepSafe/gists{/gist_id}","starred_url":"https://api.github.com/users/KeepSafe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KeepSafe/subscriptions","organizations_url":"https://api.github.com/users/KeepSafe/orgs","repos_url":"https://api.github.com/users/KeepSafe/repos","events_url":"https://api.github.com/users/KeepSafe/events{/privacy}","received_events_url":"https://api.github.com/users/KeepSafe/received_events","type":"Organization","site_admin":false},"repo":{"id":13258039,"name":"aiohttp","full_name":"KeepSafe/aiohttp","owner":{"login":"KeepSafe","id":1377248,"avatar_url":"https://avatars.githubusercontent.com/u/1377248?v=3","gravatar_id":"","url":"https://api.github.com/users/KeepSafe","html_url":"https://github.com/KeepSafe","followers_url":"https://api.github.com/users/KeepSafe/followers","following_url":"https://api.github.com/users/KeepSafe/following{/other_user}","gists_url":"https://api.github.com/users/KeepSafe/gists{/gist_id}","starred_url":"https://api.github.com/users/KeepSafe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KeepSafe/subscriptions","organizations_url":"https://api.github.com/users/KeepSafe/orgs","repos_url":"https://api.github.com/users/KeepSafe/repos","events_url":"https://api.github.com/users/KeepSafe/events{/privacy}","received_events_url":"https://api.github.com/users/KeepSafe/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KeepSafe/aiohttp","description":"http client/server for asyncio (PEP-3156)","fork":false,"url":"https://api.github.com/repos/KeepSafe/aiohttp","forks_url":"https://api.github.com/repos/KeepSafe/aiohttp/forks","keys_url":"https://api.github.com/repos/KeepSafe/aiohttp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KeepSafe/aiohttp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KeepSafe/aiohttp/teams","hooks_url":"https://api.github.com/repos/KeepSafe/aiohttp/hooks","issue_events_url":"https://api.github.com/repos/KeepSafe/aiohttp/issues/events{/number}","events_url":"https://api.github.com/repos/KeepSafe/aiohttp/events","assignees_url":"https://api.github.com/repos/KeepSafe/aiohttp/assignees{/user}","branches_url":"https://api.github.com/repos/KeepSafe/aiohttp/branches{/branch}","tags_url":"https://api.github.com/repos/KeepSafe/aiohttp/tags","blobs_url":"https://api.github.com/repos/KeepSafe/aiohttp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KeepSafe/aiohttp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KeepSafe/aiohttp/git/refs{/sha}","trees_url":"https://api.github.com/repos/KeepSafe/aiohttp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KeepSafe/aiohttp/statuses/{sha}","languages_url":"https://api.github.com/repos/KeepSafe/aiohttp/languages","stargazers_url":"https://api.github.com/repos/KeepSafe/aiohttp/stargazers","contributors_url":"https://api.github.com/repos/KeepSafe/aiohttp/contributors","subscribers_url":"https://api.github.com/repos/KeepSafe/aiohttp/subscribers","subscription_url":"https://api.github.com/repos/KeepSafe/aiohttp/subscription","commits_url":"https://api.github.com/repos/KeepSafe/aiohttp/commits{/sha}","git_commits_url":"https://api.github.com/repos/KeepSafe/aiohttp/git/commits{/sha}","comments_url":"https://api.github.com/repos/KeepSafe/aiohttp/comments{/number}","issue_comment_url":"https://api.github.com/repos/KeepSafe/aiohttp/issues/comments{/number}","contents_url":"https://api.github.com/repos/KeepSafe/aiohttp/contents/{+path}","compare_url":"https://api.github.com/repos/KeepSafe/aiohttp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KeepSafe/aiohttp/merges","archive_url":"https://api.github.com/repos/KeepSafe/aiohttp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KeepSafe/aiohttp/downloads","issues_url":"https://api.github.com/repos/KeepSafe/aiohttp/issues{/number}","pulls_url":"https://api.github.com/repos/KeepSafe/aiohttp/pulls{/number}","milestones_url":"https://api.github.com/repos/KeepSafe/aiohttp/milestones{/number}","notifications_url":"https://api.github.com/repos/KeepSafe/aiohttp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KeepSafe/aiohttp/labels{/name}","releases_url":"https://api.github.com/repos/KeepSafe/aiohttp/releases{/id}","created_at":"2013-10-01T23:04:01Z","updated_at":"2015-10-22T06:06:18Z","pushed_at":"2015-10-22T09:05:03Z","git_url":"git://github.com/KeepSafe/aiohttp.git","ssh_url":"git@github.com:KeepSafe/aiohttp.git","clone_url":"https://github.com/KeepSafe/aiohttp.git","svn_url":"https://github.com/KeepSafe/aiohttp","homepage":"http://aiohttp.readthedocs.org","size":10234,"stargazers_count":1144,"watchers_count":1144,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":198,"mirror_url":null,"open_issues_count":51,"forks":198,"open_issues":51,"watchers":1144,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/KeepSafe/aiohttp/pulls/572"},"html":{"href":"https://github.com/KeepSafe/aiohttp/pull/572"},"issue":{"href":"https://api.github.com/repos/KeepSafe/aiohttp/issues/572"},"comments":{"href":"https://api.github.com/repos/KeepSafe/aiohttp/issues/572/comments"},"review_comments":{"href":"https://api.github.com/repos/KeepSafe/aiohttp/pulls/572/comments"},"review_comment":{"href":"https://api.github.com/repos/KeepSafe/aiohttp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/KeepSafe/aiohttp/pulls/572/commits"},"statuses":{"href":"https://api.github.com/repos/KeepSafe/aiohttp/statuses/9b0de234c0c8cbbaa132ae8545bb7e05c35aad51"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"asvetlov","id":356399,"avatar_url":"https://avatars.githubusercontent.com/u/356399?v=3","gravatar_id":"","url":"https://api.github.com/users/asvetlov","html_url":"https://github.com/asvetlov","followers_url":"https://api.github.com/users/asvetlov/followers","following_url":"https://api.github.com/users/asvetlov/following{/other_user}","gists_url":"https://api.github.com/users/asvetlov/gists{/gist_id}","starred_url":"https://api.github.com/users/asvetlov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/asvetlov/subscriptions","organizations_url":"https://api.github.com/users/asvetlov/orgs","repos_url":"https://api.github.com/users/asvetlov/repos","events_url":"https://api.github.com/users/asvetlov/events{/privacy}","received_events_url":"https://api.github.com/users/asvetlov/received_events","type":"User","site_admin":false},"comments":1,"review_comments":5,"commits":8,"additions":229,"deletions":136,"changed_files":5}}