{ "info": { "author": "Rob Mackinnon", "author_email": "remackinnon@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Topic :: Internet :: Log Analysis", "Topic :: Text Processing" ], "description": "Apache Common/Combined Log Parser\n---------------------------------\n\nParses a single Apache web log format record. The parser wil first attempt to match a combined format record, if this fails it will attempt to match a common format record. In the event that the record matches neither pattern, a null record will be returned.\n\nTo return a dictionary representing the entire record or a list of specified objects call CLFParser.logDict(record), passing a single log record::\n\n >>> from clfparser import CLFParser\n >>> logRecord='10.223.157.186 - - [15/Jul/2009:14:58:59 -0700] \"GET /favicon.ico HTTP/1.1\" 404 209'\n >>> clfDict=CLFParser.logDict(logRecord)\n >>> print clfDict\n {'%b': '209', '%h': '10.223.157.186', '%time': datetime.datetime(2009, 7, 15, 14, 58, 59), '%l': '-', '%Referer': '',\n '%s': '404', '%r': '\"GET /favicon.ico HTTP/1.1\"', '%u': '-', '%t': '[15/Jul/2009:14:58:59 -0700]', '%timezone': '-0700', '%Useragent': ''}\n\nTo return a subset of the log record as a list, call CLFParser.logParts(record, formatMask). where formatMask is a quoted string listing the log items required in the output::\n\n >>> clfParts=CLFParser.logParts(test,'%h %time')\n >>> print clfParts\n ['10.223.157.186', datetime.datetime(2009, 7, 15, 14, 58, 59)]\n\nTo use with Apache Spark::\n\n >>> from clfparser import CLFParser\n >>> accLog = sc.textFile(\"access_log\", 2).cache()\n \n >>> logDict = accLog.map(lambda logRec: CLFParser.logDict(logRec))\n >>> logDict.first()\n {'%b': u'202', '%h': u'10.223.157.186', '%l': u'-', '%timezone': u'-0700', '%s': u'403', '%r': u'\"GET / HTTP/1.1\"', '%Referer': '', '%t': u'[15/Jul/2009:14:58:59 -0700]', \n '%time': datetime.datetime(2009, 7, 15, 14, 58, 59), '%u': u'-', '%Useragent': ''}\n \n >>> logParts = accLog.map(lambda logRec: CLFParser.logParts(logRec, '%h %t'))\n >>> logParts.first()\n [u'10.223.157.186', u'[15/Jul/2009:14:58:59 -0700]']\n\nCommon Log Format\n-----------------\n\nDescribed by::\n\n '%h %l %u %t \\\"%r\\\" %>s %b'\n\nWhere:\n\n- *%h* - host\n- *%l* - identity\n- *%u* - userid\n- *%t* - time\n- *%r* - request\n- *%>s* - status\n- *%b* - size\n\nCombined Log Format\n-------------------\n\nAs Common Log Format with the addition of 2 further fields::\n\n '%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"'\n\nWhere:\n\n- *%{Referer}i* - HTTP request header referer\n- *%{User-agent}i* - HTTP request header user agent\n\nAdditional Fields\n-----------------\n\nIn addition to the standard log fields, clfparser also parses the log time field, *%t*, to create a Python datetime object *%time* and a string object representing the timezone, *timezone*.\n\nInstallation\n------------\n\nInstall using **pip**::\n\n pip install clfparser\n\nTo Do\n-----\n\n- Performance improvements\n- Command line tools\n- Identify request resource as an additional data item", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/nnon/commonlogformat.git", "keywords": "apache common combined log spark", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "clfparser", "package_url": "https://pypi.org/project/clfparser/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/clfparser/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/nnon/commonlogformat.git" }, "release_url": "https://pypi.org/project/clfparser/0.4/", "requires_dist": null, "requires_python": null, "summary": "Apache Common/Combined Log Format Parser", "version": "0.4" }, "last_serial": 1891158, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "74a13756682caf0173114cd03e2150b4", "sha256": "c062a0c80c4b85af77c79d1b085cf63be8ec97d9d5cbf64f50716b3538c2a592" }, "downloads": -1, "filename": "clfparser-0.1-py2.7.egg", "has_sig": false, "md5_digest": "74a13756682caf0173114cd03e2150b4", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 3793, "upload_time": "2015-09-12T20:34:21", "url": "https://files.pythonhosted.org/packages/1c/4f/ab4d4a388bffb8084e5787cf5940392dabb2ca4f146f0de21a267e82132c/clfparser-0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "b09254163a091c2d09594a2e5b7b923c", "sha256": "6cec9c1dcfcfd60952e2d6a9ac3c8b98a36ebc35bbe269e26bb6a581fc225ff1" }, "downloads": -1, "filename": "clfparser-0.1.tar.gz", "has_sig": false, "md5_digest": "b09254163a091c2d09594a2e5b7b923c", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 1710, "upload_time": "2015-09-12T20:40:32", "url": "https://files.pythonhosted.org/packages/d0/54/456cd092864f8c5040363b181e68a140285a7277204290bda552a67fc50d/clfparser-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "e07ac462b4bf4bcba16e88f8cdb98cf4", "sha256": "a2e81ba6e73f3c4478eeca883d0c0ac3df20b4c2d1de5963d4624195ae843ab3" }, "downloads": -1, "filename": "clfparser-0.2.tar.gz", "has_sig": false, "md5_digest": "e07ac462b4bf4bcba16e88f8cdb98cf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2547, "upload_time": "2015-09-14T21:17:52", "url": "https://files.pythonhosted.org/packages/77/07/ebb2638c3f4b06dd69ea1a1ea6db5523ea1e42124695947cb257868839b0/clfparser-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "10473ffc19c26aad50f05db758a38496", "sha256": "ea14449ff58e946b7acf1a315b520856dd89c56409f1d614861df36acb4618b2" }, "downloads": -1, "filename": "clfparser-0.3.tar.gz", "has_sig": false, "md5_digest": "10473ffc19c26aad50f05db758a38496", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3120, "upload_time": "2015-09-21T21:49:08", "url": "https://files.pythonhosted.org/packages/75/53/5a15ad8e3b6b6fe388976f22be621561e1ef4b159236770d000532bf1329/clfparser-0.3.tar.gz" } ], "0.4": [] }, "urls": [] }