Name | zlogging JSON |
Version |
0.1.3.post4
JSON |
| download |
home_page | None |
Summary | zlogging: Bro/Zeek logging framework for Python. |
upload_time | 2024-08-03 10:10:41 |
maintainer | Jarry Shaw |
docs_url | None |
author | None |
requires_python | <4,>=3.6 |
license | BSD 3-Clause License |
keywords |
bro
zeek
logging
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
================================================
ZLogging - Bro/Zeek logging framework for Python
================================================
Online documentation is available at https://zlogging.readthedocs.io/
The ``ZLogging`` module provides an easy-to-use bridge between the logging
framework of the well-known Bro/Zeek Network Security Monitor (IDS).
As of version 3.0, the ``Bro`` project has been officially renamed to
``Zeek``. [1]_
It was originally developed and derived from the |BroAPT|_ project, which is an
APT detection framework based on the Bro/Zeek IDS and extended with highly
customised and customisable Python wrappers.
.. _BroAPT: https://github.com/JarryShaw/BroAPT
.. |BroAPT| replace:: ``BroAPT``
------------
Installation
------------
.. note::
``ZLogging`` supports Python all versions above and includes **3.6**
.. code:: python
pip install zlogging
-----
Usage
-----
Currently ``ZLogging`` supports the two builtin formats as supported by the
Bro/Zeek logging framework, i.e. ASCII and JSON.
A typical ASCII log file would be like::
#separator \x09
#set_separator ,
#empty_field (empty)
#unset_field -
#path http
#open 2020-02-09-18-54-09
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p trans_depth method host uri referrer version user_agent origin request_body_len response_body_len status_code status_msg info_code info_msg tags username password proxied orig_fuids orig_filenames orig_mime_types resp_fuids resp_filenames resp_mime_types
#types time string addr port addr port count string string string string string string string count count count string count string set[enum] string string set[string] vector[string] vector[string] vector[string] vector[string] vector[string] vector[string]
1581245648.761106 CSksID3S6ZxplpvmXg 192.168.2.108 56475 151.139.128.14 80 1 GET ocsp.sectigo.com /MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFEML0g5PE3oabJGPJOXafjJNRzPIBBSNjF7EVK2K4Xfpm/mbBeG4AY1h4QIQfdsAWJ+CXcbhDVFyNWosjQ== - 1.1 com.apple.trustd/2.0 - 0 471 200 OK - - (empty) - - - - - - FPtlyEAhcf8orBPu7 - application/ocsp-response
1581245651.379048 CuvUnl4HyhQbCs4tXe 192.168.2.108 56483 23.59.247.10 80 1 GET isrg.trustid.ocsp.identrust.com /MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA== - 1.1 com.apple.trustd/2.0 - 0 1398 200 OK - - (empty) - - - - - - FRfFoq3hSZkdCNDf9l - application/ocsp-response
1581245654.396334 CWo4pd1z97XLB2o0h2 192.168.2.108 56486 23.59.247.122 80 1 GET isrg.trustid.ocsp.identrust.com /MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA== - 1.1 com.apple.trustd/2.0 - 0 1398 200 OK - - (empty) - - - - - - FvQehf1pRsGmwDUzJe - application/ocsp-response
1581245692.728840 CxFQzh2ePtsnQhFNX3 192.168.2.108 56527 23.59.247.10 80 1 GET isrg.trustid.ocsp.identrust.com /MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA== - 1.1 com.apple.trustd/2.0 - 0 1398 200 OK - - (empty) - - - - - - FIeFj8WWNyhA1psGg - application/ocsp-response
1581245701.693971 CPZSNk1Y6kDvAN0KZ8 192.168.2.108 56534 23.59.247.122 80 1 GET isrg.trustid.ocsp.identrust.com /MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA== - 1.1 com.apple.trustd/2.0 - 0 1398 200 OK - - (empty) - - - - - - F0fGHe4RPuNBhYWNv6 - application/ocsp-response
1581245707.848088 Cnab6CHFOprdppKi5 192.168.2.108 56542 23.59.247.122 80 1 GET isrg.trustid.ocsp.identrust.com /MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA== - 1.1 com.apple.trustd/2.0 - 0 1398 200 OK - - (empty) - - - - - - FgDBep1h7EPHC8qQB6 - application/ocsp-response
1581245952.784242 CPNd6t3ofePpdNjErl 192.168.2.108 56821 176.31.225.118 80 1 GET tracker.trackerfix.com /announce?info_hash=y\x82es"\x1dV\xde|m\xbe"\xe5\xef\xbe\x04\xb3\x1fW\xfc&peer_id=-qB4210-0ZOn5Ifyl*WF&port=63108&uploaded=0&downloaded=0&left=3225455594&corrupt=0&key=6B23B036&event=started&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0 - 1.1 - - 0 0 307 Temporary Redirect - - (empty) - - - - - - - - -
1581245960.123295 CfAkwf2CFI13b24gqf 192.168.2.108 56889 176.31.225.118 80 1 GET tracker.trackerfix.com /announce?info_hash=!u7\xdad\x94x\xecS\x80\x89\x04\x9c\x13#\x84M\x1b\xcd\x1a&peer_id=-qB4210-i36iloGe*QT9&port=63108&uploaded=0&downloaded=0&left=1637966572&corrupt=0&key=ECE6637E&event=started&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0 - 1.1 - - 0 0 307 Temporary Redirect - - (empty) - - - - - - - - -
#close 2020-02-09-19-01-40
Its corresponding JSON log file would be like::
{"ts": 1581245648.761106, "uid": "CSksID3S6ZxplpvmXg", "id.orig_h": "192.168.2.108", "id.orig_p": 56475, "id.resp_h": "151.139.128.14", "id.resp_p": 80, "trans_depth": 1, "method": "GET", "host": "ocsp.sectigo.com", "uri": "/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFEML0g5PE3oabJGPJOXafjJNRzPIBBSNjF7EVK2K4Xfpm/mbBeG4AY1h4QIQfdsAWJ+CXcbhDVFyNWosjQ==", "referrer": "-", "version": "1.1", "user_agent": "com.apple.trustd/2.0", "origin": "-", "request_body_len": 0, "response_body_len": 471, "status_code": 200, "status_msg": "OK", "info_code": null, "info_msg": "-", "tags": [], "username": "-", "password": "-", "proxied": null, "orig_fuids": null, "orig_filenames": null, "orig_mime_types": null, "resp_fuids": ["FPtlyEAhcf8orBPu7"], "resp_filenames": null, "resp_mime_types": ["application/ocsp-response"]}
{"ts": 1581245651.379048, "uid": "CuvUnl4HyhQbCs4tXe", "id.orig_h": "192.168.2.108", "id.orig_p": 56483, "id.resp_h": "23.59.247.10", "id.resp_p": 80, "trans_depth": 1, "method": "GET", "host": "isrg.trustid.ocsp.identrust.com", "uri": "/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==", "referrer": "-", "version": "1.1", "user_agent": "com.apple.trustd/2.0", "origin": "-", "request_body_len": 0, "response_body_len": 1398, "status_code": 200, "status_msg": "OK", "info_code": null, "info_msg": "-", "tags": [], "username": "-", "password": "-", "proxied": null, "orig_fuids": null, "orig_filenames": null, "orig_mime_types": null, "resp_fuids": ["FRfFoq3hSZkdCNDf9l"], "resp_filenames": null, "resp_mime_types": ["application/ocsp-response"]}
{"ts": 1581245654.396334, "uid": "CWo4pd1z97XLB2o0h2", "id.orig_h": "192.168.2.108", "id.orig_p": 56486, "id.resp_h": "23.59.247.122", "id.resp_p": 80, "trans_depth": 1, "method": "GET", "host": "isrg.trustid.ocsp.identrust.com", "uri": "/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==", "referrer": "-", "version": "1.1", "user_agent": "com.apple.trustd/2.0", "origin": "-", "request_body_len": 0, "response_body_len": 1398, "status_code": 200, "status_msg": "OK", "info_code": null, "info_msg": "-", "tags": [], "username": "-", "password": "-", "proxied": null, "orig_fuids": null, "orig_filenames": null, "orig_mime_types": null, "resp_fuids": ["FvQehf1pRsGmwDUzJe"], "resp_filenames": null, "resp_mime_types": ["application/ocsp-response"]}
{"ts": 1581245692.72884, "uid": "CxFQzh2ePtsnQhFNX3", "id.orig_h": "192.168.2.108", "id.orig_p": 56527, "id.resp_h": "23.59.247.10", "id.resp_p": 80, "trans_depth": 1, "method": "GET", "host": "isrg.trustid.ocsp.identrust.com", "uri": "/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==", "referrer": "-", "version": "1.1", "user_agent": "com.apple.trustd/2.0", "origin": "-", "request_body_len": 0, "response_body_len": 1398, "status_code": 200, "status_msg": "OK", "info_code": null, "info_msg": "-", "tags": [], "username": "-", "password": "-", "proxied": null, "orig_fuids": null, "orig_filenames": null, "orig_mime_types": null, "resp_fuids": ["FIeFj8WWNyhA1psGg"], "resp_filenames": null, "resp_mime_types": ["application/ocsp-response"]}
{"ts": 1581245701.693971, "uid": "CPZSNk1Y6kDvAN0KZ8", "id.orig_h": "192.168.2.108", "id.orig_p": 56534, "id.resp_h": "23.59.247.122", "id.resp_p": 80, "trans_depth": 1, "method": "GET", "host": "isrg.trustid.ocsp.identrust.com", "uri": "/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==", "referrer": "-", "version": "1.1", "user_agent": "com.apple.trustd/2.0", "origin": "-", "request_body_len": 0, "response_body_len": 1398, "status_code": 200, "status_msg": "OK", "info_code": null, "info_msg": "-", "tags": [], "username": "-", "password": "-", "proxied": null, "orig_fuids": null, "orig_filenames": null, "orig_mime_types": null, "resp_fuids": ["F0fGHe4RPuNBhYWNv6"], "resp_filenames": null, "resp_mime_types": ["application/ocsp-response"]}
{"ts": 1581245707.848088, "uid": "Cnab6CHFOprdppKi5", "id.orig_h": "192.168.2.108", "id.orig_p": 56542, "id.resp_h": "23.59.247.122", "id.resp_p": 80, "trans_depth": 1, "method": "GET", "host": "isrg.trustid.ocsp.identrust.com", "uri": "/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==", "referrer": "-", "version": "1.1", "user_agent": "com.apple.trustd/2.0", "origin": "-", "request_body_len": 0, "response_body_len": 1398, "status_code": 200, "status_msg": "OK", "info_code": null, "info_msg": "-", "tags": [], "username": "-", "password": "-", "proxied": null, "orig_fuids": null, "orig_filenames": null, "orig_mime_types": null, "resp_fuids": ["FgDBep1h7EPHC8qQB6"], "resp_filenames": null, "resp_mime_types": ["application/ocsp-response"]}
{"ts": 1581245952.784242, "uid": "CPNd6t3ofePpdNjErl", "id.orig_h": "192.168.2.108", "id.orig_p": 56821, "id.resp_h": "176.31.225.118", "id.resp_p": 80, "trans_depth": 1, "method": "GET", "host": "tracker.trackerfix.com", "uri": "/announce?info_hash=y\\x82es\"\\x1dV\\xde|m\\xbe\"\\xe5\\xef\\xbe\\x04\\xb3\\x1fW\\xfc&peer_id=-qB4210-0ZOn5Ifyl*WF&port=63108&uploaded=0&downloaded=0&left=3225455594&corrupt=0&key=6B23B036&event=started&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0", "referrer": "-", "version": "1.1", "user_agent": "-", "origin": "-", "request_body_len": 0, "response_body_len": 0, "status_code": 307, "status_msg": "Temporary Redirect", "info_code": null, "info_msg": "-", "tags": [], "username": "-", "password": "-", "proxied": null, "orig_fuids": null, "orig_filenames": null, "orig_mime_types": null, "resp_fuids": null, "resp_filenames": null, "resp_mime_types": null}
{"ts": 1581245960.123295, "uid": "CfAkwf2CFI13b24gqf", "id.orig_h": "192.168.2.108", "id.orig_p": 56889, "id.resp_h": "176.31.225.118", "id.resp_p": 80, "trans_depth": 1, "method": "GET", "host": "tracker.trackerfix.com", "uri": "/announce?info_hash=!u7\\xdad\\x94x\\xecS\\x80\\x89\\x04\\x9c\\x13#\\x84M\\x1b\\xcd\\x1a&peer_id=-qB4210-i36iloGe*QT9&port=63108&uploaded=0&downloaded=0&left=1637966572&corrupt=0&key=ECE6637E&event=started&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0", "referrer": "-", "version": "1.1", "user_agent": "-", "origin": "-", "request_body_len": 0, "response_body_len": 0, "status_code": 307, "status_msg": "Temporary Redirect", "info_code": null, "info_msg": "-", "tags": [], "username": "-", "password": "-", "proxied": null, "orig_fuids": null, "orig_filenames": null, "orig_mime_types": null, "resp_fuids": null, "resp_filenames": null, "resp_mime_types": null}
How to Load/Parse a Log File?
-----------------------------
To load (parse) a log file generically, i.e. when you don't know what format
the log file is, you can simple call the ``~zlogging.loader.parse``,
``zlogging.loader.loads`` functions::
# to parse log at filename
>>> parse('path/to/log')
# to load log from a file object
>>> with open('path/to/log', 'rb') as file:
... load(file)
# to load log from a string
>>> with open('/path/to/log', 'rb') as file:
... loads(file.read())
.. note::
``zlogging.loader.load``, the file object must be opened
in binary mode.
``zlogging.loader.loads``, if the ``data`` suplied is an
encoded string (``str``), the function will first try to decode it as a
bytestring (``bytes``) with ``'ascii'`` encoding.
If you do know the format, you may call the specified functions for each
``zlogging.loader.parse_ascii`` and ``zlogging.loader.parse_json``, etc.
If you would like to customise your own parser, just subclass
``zlogging.loader.BaseParser`` and implement your own ideas.
How to Dump/Write a Log File?
-----------------------------
Before dumping (writing) a log file, you need to create a log **data model**
first. Just like in the Bro/Zeek script language, when customise logging, you
need to notify the logging framework with a new log stream. Here, in
``ZLogging``, we introduced **data model** for the same purpose.
A **data model** is a subclass of ``zlogging.model.Model`` with fields
and data types declared. A typical **data model** can be as following::
class MyLog(Model):
field_one = StringType()
field_two = SetType(element_type=PortType)
where ``field_one`` is ``string`` type, i.e. ``zlogging.types.StringType``;
and ``field_two`` is ``set[port]`` types, i.e. ``zlogging.types.SetType``
of ``zlogging.types.PortType``.
Or you may use type annotations as `PEP 484`_ introduced when declaring **data models**.
All available type hints can be found in ``zlogging.typing``::
class MyLog(Model):
field_one: zeek_string
field_two: zeek_set[zeek_port]
After declaration of your **data model**, you can know dump (write) your log
file with the corresponding functions.
If you would like to customise your own writer, just subclass
``zlogging.loader.BaseWriter`` and implement your own ideas.
.. _PEP 484:
https://www.python.org/dev/peps/pep-0484/
.. [1] https://blog.zeek.org/2018/10/renaming-bro-project_11.html
Raw data
{
"_id": null,
"home_page": null,
"name": "zlogging",
"maintainer": "Jarry Shaw",
"docs_url": null,
"requires_python": "<4,>=3.6",
"maintainer_email": null,
"keywords": "bro, zeek, logging",
"author": null,
"author_email": "Jarry Shaw <jarryshaw@icloud.com>",
"download_url": "https://files.pythonhosted.org/packages/0a/27/43350627add53189e6548d2d399424edf43e507eef22e0766dc06596763f/zlogging-0.1.3.post4.tar.gz",
"platform": null,
"description": "================================================\nZLogging - Bro/Zeek logging framework for Python\n================================================\n\n Online documentation is available at https://zlogging.readthedocs.io/\n\nThe ``ZLogging`` module provides an easy-to-use bridge between the logging\nframework of the well-known Bro/Zeek Network Security Monitor (IDS).\n\n As of version 3.0, the ``Bro`` project has been officially renamed to\n ``Zeek``. [1]_\n\nIt was originally developed and derived from the |BroAPT|_ project, which is an\nAPT detection framework based on the Bro/Zeek IDS and extended with highly\ncustomised and customisable Python wrappers.\n\n.. _BroAPT: https://github.com/JarryShaw/BroAPT\n.. |BroAPT| replace:: ``BroAPT``\n\n------------\nInstallation\n------------\n\n.. note::\n\n ``ZLogging`` supports Python all versions above and includes **3.6**\n\n.. code:: python\n\n pip install zlogging\n\n-----\nUsage\n-----\n\nCurrently ``ZLogging`` supports the two builtin formats as supported by the\nBro/Zeek logging framework, i.e. ASCII and JSON.\n\nA typical ASCII log file would be like::\n\n #separator \\x09\n #set_separator\t,\n #empty_field\t(empty)\n #unset_field\t-\n #path\thttp\n #open\t2020-02-09-18-54-09\n #fields\tts\tuid\tid.orig_h\tid.orig_p\tid.resp_h\tid.resp_p\ttrans_depth\tmethod\thost\turi\treferrer\tversion\tuser_agent\torigin\trequest_body_len\tresponse_body_len\tstatus_code\tstatus_msg\tinfo_code\tinfo_msg\ttags\tusername\tpassword\tproxied\torig_fuids\torig_filenames\torig_mime_types\tresp_fuids\tresp_filenames\tresp_mime_types\n #types\ttime\tstring\taddr\tport\taddr\tport\tcount\tstring\tstring\tstring\tstring\tstring\tstring\tstring\tcount\tcount\tcount\tstring\tcount\tstring\tset[enum]\tstring\tstring\tset[string]\tvector[string]\tvector[string]\tvector[string]\tvector[string]\tvector[string]\tvector[string]\n 1581245648.761106\tCSksID3S6ZxplpvmXg\t192.168.2.108\t56475\t151.139.128.14\t80\t1\tGET\tocsp.sectigo.com\t/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFEML0g5PE3oabJGPJOXafjJNRzPIBBSNjF7EVK2K4Xfpm/mbBeG4AY1h4QIQfdsAWJ+CXcbhDVFyNWosjQ==\t-\t1.1\tcom.apple.trustd/2.0\t-\t0\t471\t200\tOK\t-\t-\t(empty)\t-\t-\t-\t-\t-\t-\tFPtlyEAhcf8orBPu7\t-\tapplication/ocsp-response\n 1581245651.379048\tCuvUnl4HyhQbCs4tXe\t192.168.2.108\t56483\t23.59.247.10\t80\t1\tGET\tisrg.trustid.ocsp.identrust.com\t/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\t-\t1.1\tcom.apple.trustd/2.0\t-\t0\t1398\t200\tOK\t-\t-\t(empty)\t-\t-\t-\t-\t-\t-\tFRfFoq3hSZkdCNDf9l\t-\tapplication/ocsp-response\n 1581245654.396334\tCWo4pd1z97XLB2o0h2\t192.168.2.108\t56486\t23.59.247.122\t80\t1\tGET\tisrg.trustid.ocsp.identrust.com\t/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\t-\t1.1\tcom.apple.trustd/2.0\t-\t0\t1398\t200\tOK\t-\t-\t(empty)\t-\t-\t-\t-\t-\t-\tFvQehf1pRsGmwDUzJe\t-\tapplication/ocsp-response\n 1581245692.728840\tCxFQzh2ePtsnQhFNX3\t192.168.2.108\t56527\t23.59.247.10\t80\t1\tGET\tisrg.trustid.ocsp.identrust.com\t/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\t-\t1.1\tcom.apple.trustd/2.0\t-\t0\t1398\t200\tOK\t-\t-\t(empty)\t-\t-\t-\t-\t-\t-\tFIeFj8WWNyhA1psGg\t-\tapplication/ocsp-response\n 1581245701.693971\tCPZSNk1Y6kDvAN0KZ8\t192.168.2.108\t56534\t23.59.247.122\t80\t1\tGET\tisrg.trustid.ocsp.identrust.com\t/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\t-\t1.1\tcom.apple.trustd/2.0\t-\t0\t1398\t200\tOK\t-\t-\t(empty)\t-\t-\t-\t-\t-\t-\tF0fGHe4RPuNBhYWNv6\t-\tapplication/ocsp-response\n 1581245707.848088\tCnab6CHFOprdppKi5\t192.168.2.108\t56542\t23.59.247.122\t80\t1\tGET\tisrg.trustid.ocsp.identrust.com\t/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\t-\t1.1\tcom.apple.trustd/2.0\t-\t0\t1398\t200\tOK\t-\t-\t(empty)\t-\t-\t-\t-\t-\t-\tFgDBep1h7EPHC8qQB6\t-\tapplication/ocsp-response\n 1581245952.784242\tCPNd6t3ofePpdNjErl\t192.168.2.108\t56821\t176.31.225.118\t80\t1\tGET\ttracker.trackerfix.com\t/announce?info_hash=y\\x82es\"\\x1dV\\xde|m\\xbe\"\\xe5\\xef\\xbe\\x04\\xb3\\x1fW\\xfc&peer_id=-qB4210-0ZOn5Ifyl*WF&port=63108&uploaded=0&downloaded=0&left=3225455594&corrupt=0&key=6B23B036&event=started&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0\t-\t1.1\t-\t-\t0\t0\t307\tTemporary Redirect\t-\t-\t(empty)\t-\t-\t-\t-\t-\t-\t-\t-\t-\n 1581245960.123295\tCfAkwf2CFI13b24gqf\t192.168.2.108\t56889\t176.31.225.118\t80\t1\tGET\ttracker.trackerfix.com\t/announce?info_hash=!u7\\xdad\\x94x\\xecS\\x80\\x89\\x04\\x9c\\x13#\\x84M\\x1b\\xcd\\x1a&peer_id=-qB4210-i36iloGe*QT9&port=63108&uploaded=0&downloaded=0&left=1637966572&corrupt=0&key=ECE6637E&event=started&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0\t-\t1.1\t-\t-\t0\t0\t307\tTemporary Redirect\t-\t-\t(empty)\t-\t-\t-\t-\t-\t-\t-\t-\t-\n #close\t2020-02-09-19-01-40\n\nIts corresponding JSON log file would be like::\n\n {\"ts\": 1581245648.761106, \"uid\": \"CSksID3S6ZxplpvmXg\", \"id.orig_h\": \"192.168.2.108\", \"id.orig_p\": 56475, \"id.resp_h\": \"151.139.128.14\", \"id.resp_p\": 80, \"trans_depth\": 1, \"method\": \"GET\", \"host\": \"ocsp.sectigo.com\", \"uri\": \"/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFEML0g5PE3oabJGPJOXafjJNRzPIBBSNjF7EVK2K4Xfpm/mbBeG4AY1h4QIQfdsAWJ+CXcbhDVFyNWosjQ==\", \"referrer\": \"-\", \"version\": \"1.1\", \"user_agent\": \"com.apple.trustd/2.0\", \"origin\": \"-\", \"request_body_len\": 0, \"response_body_len\": 471, \"status_code\": 200, \"status_msg\": \"OK\", \"info_code\": null, \"info_msg\": \"-\", \"tags\": [], \"username\": \"-\", \"password\": \"-\", \"proxied\": null, \"orig_fuids\": null, \"orig_filenames\": null, \"orig_mime_types\": null, \"resp_fuids\": [\"FPtlyEAhcf8orBPu7\"], \"resp_filenames\": null, \"resp_mime_types\": [\"application/ocsp-response\"]}\n {\"ts\": 1581245651.379048, \"uid\": \"CuvUnl4HyhQbCs4tXe\", \"id.orig_h\": \"192.168.2.108\", \"id.orig_p\": 56483, \"id.resp_h\": \"23.59.247.10\", \"id.resp_p\": 80, \"trans_depth\": 1, \"method\": \"GET\", \"host\": \"isrg.trustid.ocsp.identrust.com\", \"uri\": \"/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\", \"referrer\": \"-\", \"version\": \"1.1\", \"user_agent\": \"com.apple.trustd/2.0\", \"origin\": \"-\", \"request_body_len\": 0, \"response_body_len\": 1398, \"status_code\": 200, \"status_msg\": \"OK\", \"info_code\": null, \"info_msg\": \"-\", \"tags\": [], \"username\": \"-\", \"password\": \"-\", \"proxied\": null, \"orig_fuids\": null, \"orig_filenames\": null, \"orig_mime_types\": null, \"resp_fuids\": [\"FRfFoq3hSZkdCNDf9l\"], \"resp_filenames\": null, \"resp_mime_types\": [\"application/ocsp-response\"]}\n {\"ts\": 1581245654.396334, \"uid\": \"CWo4pd1z97XLB2o0h2\", \"id.orig_h\": \"192.168.2.108\", \"id.orig_p\": 56486, \"id.resp_h\": \"23.59.247.122\", \"id.resp_p\": 80, \"trans_depth\": 1, \"method\": \"GET\", \"host\": \"isrg.trustid.ocsp.identrust.com\", \"uri\": \"/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\", \"referrer\": \"-\", \"version\": \"1.1\", \"user_agent\": \"com.apple.trustd/2.0\", \"origin\": \"-\", \"request_body_len\": 0, \"response_body_len\": 1398, \"status_code\": 200, \"status_msg\": \"OK\", \"info_code\": null, \"info_msg\": \"-\", \"tags\": [], \"username\": \"-\", \"password\": \"-\", \"proxied\": null, \"orig_fuids\": null, \"orig_filenames\": null, \"orig_mime_types\": null, \"resp_fuids\": [\"FvQehf1pRsGmwDUzJe\"], \"resp_filenames\": null, \"resp_mime_types\": [\"application/ocsp-response\"]}\n {\"ts\": 1581245692.72884, \"uid\": \"CxFQzh2ePtsnQhFNX3\", \"id.orig_h\": \"192.168.2.108\", \"id.orig_p\": 56527, \"id.resp_h\": \"23.59.247.10\", \"id.resp_p\": 80, \"trans_depth\": 1, \"method\": \"GET\", \"host\": \"isrg.trustid.ocsp.identrust.com\", \"uri\": \"/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\", \"referrer\": \"-\", \"version\": \"1.1\", \"user_agent\": \"com.apple.trustd/2.0\", \"origin\": \"-\", \"request_body_len\": 0, \"response_body_len\": 1398, \"status_code\": 200, \"status_msg\": \"OK\", \"info_code\": null, \"info_msg\": \"-\", \"tags\": [], \"username\": \"-\", \"password\": \"-\", \"proxied\": null, \"orig_fuids\": null, \"orig_filenames\": null, \"orig_mime_types\": null, \"resp_fuids\": [\"FIeFj8WWNyhA1psGg\"], \"resp_filenames\": null, \"resp_mime_types\": [\"application/ocsp-response\"]}\n {\"ts\": 1581245701.693971, \"uid\": \"CPZSNk1Y6kDvAN0KZ8\", \"id.orig_h\": \"192.168.2.108\", \"id.orig_p\": 56534, \"id.resp_h\": \"23.59.247.122\", \"id.resp_p\": 80, \"trans_depth\": 1, \"method\": \"GET\", \"host\": \"isrg.trustid.ocsp.identrust.com\", \"uri\": \"/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\", \"referrer\": \"-\", \"version\": \"1.1\", \"user_agent\": \"com.apple.trustd/2.0\", \"origin\": \"-\", \"request_body_len\": 0, \"response_body_len\": 1398, \"status_code\": 200, \"status_msg\": \"OK\", \"info_code\": null, \"info_msg\": \"-\", \"tags\": [], \"username\": \"-\", \"password\": \"-\", \"proxied\": null, \"orig_fuids\": null, \"orig_filenames\": null, \"orig_mime_types\": null, \"resp_fuids\": [\"F0fGHe4RPuNBhYWNv6\"], \"resp_filenames\": null, \"resp_mime_types\": [\"application/ocsp-response\"]}\n {\"ts\": 1581245707.848088, \"uid\": \"Cnab6CHFOprdppKi5\", \"id.orig_h\": \"192.168.2.108\", \"id.orig_p\": 56542, \"id.resp_h\": \"23.59.247.122\", \"id.resp_p\": 80, \"trans_depth\": 1, \"method\": \"GET\", \"host\": \"isrg.trustid.ocsp.identrust.com\", \"uri\": \"/MFYwVKADAgEAME0wSzBJMAkGBSsOAwIaBQAEFG/0aE1DEtJIYoGcwCs9Rywdii+mBBTEp7Gkeyxx+tvhS5B1/8QVYIWJEAIQCgFBQgAAAVOFc2oLheynCA==\", \"referrer\": \"-\", \"version\": \"1.1\", \"user_agent\": \"com.apple.trustd/2.0\", \"origin\": \"-\", \"request_body_len\": 0, \"response_body_len\": 1398, \"status_code\": 200, \"status_msg\": \"OK\", \"info_code\": null, \"info_msg\": \"-\", \"tags\": [], \"username\": \"-\", \"password\": \"-\", \"proxied\": null, \"orig_fuids\": null, \"orig_filenames\": null, \"orig_mime_types\": null, \"resp_fuids\": [\"FgDBep1h7EPHC8qQB6\"], \"resp_filenames\": null, \"resp_mime_types\": [\"application/ocsp-response\"]}\n {\"ts\": 1581245952.784242, \"uid\": \"CPNd6t3ofePpdNjErl\", \"id.orig_h\": \"192.168.2.108\", \"id.orig_p\": 56821, \"id.resp_h\": \"176.31.225.118\", \"id.resp_p\": 80, \"trans_depth\": 1, \"method\": \"GET\", \"host\": \"tracker.trackerfix.com\", \"uri\": \"/announce?info_hash=y\\\\x82es\\\"\\\\x1dV\\\\xde|m\\\\xbe\\\"\\\\xe5\\\\xef\\\\xbe\\\\x04\\\\xb3\\\\x1fW\\\\xfc&peer_id=-qB4210-0ZOn5Ifyl*WF&port=63108&uploaded=0&downloaded=0&left=3225455594&corrupt=0&key=6B23B036&event=started&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0\", \"referrer\": \"-\", \"version\": \"1.1\", \"user_agent\": \"-\", \"origin\": \"-\", \"request_body_len\": 0, \"response_body_len\": 0, \"status_code\": 307, \"status_msg\": \"Temporary Redirect\", \"info_code\": null, \"info_msg\": \"-\", \"tags\": [], \"username\": \"-\", \"password\": \"-\", \"proxied\": null, \"orig_fuids\": null, \"orig_filenames\": null, \"orig_mime_types\": null, \"resp_fuids\": null, \"resp_filenames\": null, \"resp_mime_types\": null}\n {\"ts\": 1581245960.123295, \"uid\": \"CfAkwf2CFI13b24gqf\", \"id.orig_h\": \"192.168.2.108\", \"id.orig_p\": 56889, \"id.resp_h\": \"176.31.225.118\", \"id.resp_p\": 80, \"trans_depth\": 1, \"method\": \"GET\", \"host\": \"tracker.trackerfix.com\", \"uri\": \"/announce?info_hash=!u7\\\\xdad\\\\x94x\\\\xecS\\\\x80\\\\x89\\\\x04\\\\x9c\\\\x13#\\\\x84M\\\\x1b\\\\xcd\\\\x1a&peer_id=-qB4210-i36iloGe*QT9&port=63108&uploaded=0&downloaded=0&left=1637966572&corrupt=0&key=ECE6637E&event=started&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0\", \"referrer\": \"-\", \"version\": \"1.1\", \"user_agent\": \"-\", \"origin\": \"-\", \"request_body_len\": 0, \"response_body_len\": 0, \"status_code\": 307, \"status_msg\": \"Temporary Redirect\", \"info_code\": null, \"info_msg\": \"-\", \"tags\": [], \"username\": \"-\", \"password\": \"-\", \"proxied\": null, \"orig_fuids\": null, \"orig_filenames\": null, \"orig_mime_types\": null, \"resp_fuids\": null, \"resp_filenames\": null, \"resp_mime_types\": null}\n\nHow to Load/Parse a Log File?\n-----------------------------\n\nTo load (parse) a log file generically, i.e. when you don't know what format\nthe log file is, you can simple call the ``~zlogging.loader.parse``,\n``zlogging.loader.loads`` functions::\n\n # to parse log at filename\n >>> parse('path/to/log')\n # to load log from a file object\n >>> with open('path/to/log', 'rb') as file:\n ... load(file)\n # to load log from a string\n >>> with open('/path/to/log', 'rb') as file:\n ... loads(file.read())\n\n.. note::\n\n ``zlogging.loader.load``, the file object must be opened\n in binary mode.\n\n ``zlogging.loader.loads``, if the ``data`` suplied is an\n encoded string (``str``), the function will first try to decode it as a\n bytestring (``bytes``) with ``'ascii'`` encoding.\n\nIf you do know the format, you may call the specified functions for each\n``zlogging.loader.parse_ascii`` and ``zlogging.loader.parse_json``, etc.\n\nIf you would like to customise your own parser, just subclass\n``zlogging.loader.BaseParser`` and implement your own ideas.\n\nHow to Dump/Write a Log File?\n-----------------------------\n\nBefore dumping (writing) a log file, you need to create a log **data model**\nfirst. Just like in the Bro/Zeek script language, when customise logging, you\nneed to notify the logging framework with a new log stream. Here, in\n``ZLogging``, we introduced **data model** for the same purpose.\n\nA **data model** is a subclass of ``zlogging.model.Model`` with fields\nand data types declared. A typical **data model** can be as following::\n\n class MyLog(Model):\n field_one = StringType()\n field_two = SetType(element_type=PortType)\n\nwhere ``field_one`` is ``string`` type, i.e. ``zlogging.types.StringType``;\nand ``field_two`` is ``set[port]`` types, i.e. ``zlogging.types.SetType``\nof ``zlogging.types.PortType``.\n\nOr you may use type annotations as `PEP 484`_ introduced when declaring **data models**.\nAll available type hints can be found in ``zlogging.typing``::\n\n class MyLog(Model):\n field_one: zeek_string\n field_two: zeek_set[zeek_port]\n\nAfter declaration of your **data model**, you can know dump (write) your log\nfile with the corresponding functions.\n\nIf you would like to customise your own writer, just subclass\n``zlogging.loader.BaseWriter`` and implement your own ideas.\n\n.. _PEP 484:\n https://www.python.org/dev/peps/pep-0484/\n\n.. [1] https://blog.zeek.org/2018/10/renaming-bro-project_11.html\n",
"bugtrack_url": null,
"license": "BSD 3-Clause License",
"summary": "zlogging: Bro/Zeek logging framework for Python.",
"version": "0.1.3.post4",
"project_urls": {
"changelog": "https://github.com/JarryShaw/zlogging/releases",
"documentation": "https://jarryshaw.github.io/zlogging/",
"homepage": "https://jarryshaw.github.io/zlogging/",
"repository": "https://github.com/JarryShaw/zlogging"
},
"split_keywords": [
"bro",
" zeek",
" logging"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1944f52e68c8224d1280b7ca8437d697cf17912ad4c4c2992cfcbe3f61607d52",
"md5": "a37eff92c0cefb7877eb594962d4b9b9",
"sha256": "16a20fbbaf3c84d3c998fe3cf4b3a24caf45ba9a0e36702ccb974e5114b407b4"
},
"downloads": -1,
"filename": "zlogging-0.1.3.post4-cp310-none-any.whl",
"has_sig": false,
"md5_digest": "a37eff92c0cefb7877eb594962d4b9b9",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4,>=3.6",
"size": 78580,
"upload_time": "2024-08-03T10:10:53",
"upload_time_iso_8601": "2024-08-03T10:10:53.289287Z",
"url": "https://files.pythonhosted.org/packages/19/44/f52e68c8224d1280b7ca8437d697cf17912ad4c4c2992cfcbe3f61607d52/zlogging-0.1.3.post4-cp310-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "03c70a406e43587530fedf8b5d898a35f8bd42ed9a8a2a899ee26c9c94c5b76c",
"md5": "903fc889d903c3a7e4906f4b03bb0323",
"sha256": "8c7e53b91fb1af6896be7794ffc133dcb803a3ba870f03227ad46b34b7b8a9ca"
},
"downloads": -1,
"filename": "zlogging-0.1.3.post4-cp311-none-any.whl",
"has_sig": false,
"md5_digest": "903fc889d903c3a7e4906f4b03bb0323",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4,>=3.6",
"size": 78580,
"upload_time": "2024-08-03T10:10:41",
"upload_time_iso_8601": "2024-08-03T10:10:41.625307Z",
"url": "https://files.pythonhosted.org/packages/03/c7/0a406e43587530fedf8b5d898a35f8bd42ed9a8a2a899ee26c9c94c5b76c/zlogging-0.1.3.post4-cp311-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c192a5f1576de4a3a3c4f53454cfdfcaecf59d79de498c3f136c185e4764ab4f",
"md5": "1f24553d51a7377eeea3037a7d433765",
"sha256": "9dc50d6ceaec5eb09ea516b5938d9b6d5523b1a75acd341b0dbbf99f21f04c1a"
},
"downloads": -1,
"filename": "zlogging-0.1.3.post4-cp312-none-any.whl",
"has_sig": false,
"md5_digest": "1f24553d51a7377eeea3037a7d433765",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4,>=3.6",
"size": 78580,
"upload_time": "2024-08-03T10:10:39",
"upload_time_iso_8601": "2024-08-03T10:10:39.832940Z",
"url": "https://files.pythonhosted.org/packages/c1/92/a5f1576de4a3a3c4f53454cfdfcaecf59d79de498c3f136c185e4764ab4f/zlogging-0.1.3.post4-cp312-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7306224c01c04057801f5d0a78a05ff71031be58d8f91812748e817cc1a25d78",
"md5": "510ec8737d8d9b18fab0b70ba0e2f9f0",
"sha256": "91426d061e35a697799769709815ad1f5e9c00d9918f7e2fde76d14736de39af"
},
"downloads": -1,
"filename": "zlogging-0.1.3.post4-cp38-none-any.whl",
"has_sig": false,
"md5_digest": "510ec8737d8d9b18fab0b70ba0e2f9f0",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<4,>=3.6",
"size": 78580,
"upload_time": "2024-08-03T10:10:48",
"upload_time_iso_8601": "2024-08-03T10:10:48.717289Z",
"url": "https://files.pythonhosted.org/packages/73/06/224c01c04057801f5d0a78a05ff71031be58d8f91812748e817cc1a25d78/zlogging-0.1.3.post4-cp38-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dc56f0f318faf781c83265b7170060a61319b7245e22e7143f42d99bd9d5ca54",
"md5": "020d5e9d287b4aa14f5be0fa82311e2d",
"sha256": "24ed97c48df88d9b28b3b58c4d454d9ec9fafe1ebbff48461621209dd2a30c41"
},
"downloads": -1,
"filename": "zlogging-0.1.3.post4-cp39-none-any.whl",
"has_sig": false,
"md5_digest": "020d5e9d287b4aa14f5be0fa82311e2d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<4,>=3.6",
"size": 78580,
"upload_time": "2024-08-03T10:10:38",
"upload_time_iso_8601": "2024-08-03T10:10:38.393509Z",
"url": "https://files.pythonhosted.org/packages/dc/56/f0f318faf781c83265b7170060a61319b7245e22e7143f42d99bd9d5ca54/zlogging-0.1.3.post4-cp39-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "361f2e668339f22e9e895174f4791ff2a4c15009eb58e522b32bc95ab3ee4d2e",
"md5": "1d89b211c61113b87e7d3b7218030e94",
"sha256": "303d18e69741a42c55ebc96bf41f26197a0627773e171755d0917c3bf9f86a59"
},
"downloads": -1,
"filename": "zlogging-0.1.3.post4-pp310-none-any.whl",
"has_sig": false,
"md5_digest": "1d89b211c61113b87e7d3b7218030e94",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "<4,>=3.6",
"size": 78580,
"upload_time": "2024-08-03T10:10:53",
"upload_time_iso_8601": "2024-08-03T10:10:53.545577Z",
"url": "https://files.pythonhosted.org/packages/36/1f/2e668339f22e9e895174f4791ff2a4c15009eb58e522b32bc95ab3ee4d2e/zlogging-0.1.3.post4-pp310-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "669c28f408c7f122527c552977184326455d46f49ea0ba30eda580f2604e50cb",
"md5": "f213ee5473b15d0a01b3749f486972f1",
"sha256": "808ec795deff3b8cdb2a6e5a35cb78efb2cc046f17bac9425e993e362eea5f71"
},
"downloads": -1,
"filename": "zlogging-0.1.3.post4-pp38-none-any.whl",
"has_sig": false,
"md5_digest": "f213ee5473b15d0a01b3749f486972f1",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": "<4,>=3.6",
"size": 78580,
"upload_time": "2024-08-03T10:10:52",
"upload_time_iso_8601": "2024-08-03T10:10:52.101042Z",
"url": "https://files.pythonhosted.org/packages/66/9c/28f408c7f122527c552977184326455d46f49ea0ba30eda580f2604e50cb/zlogging-0.1.3.post4-pp38-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fb5ea407aba65ba4964291764d7abc79e0d7deef08e7175585611c39491b83d4",
"md5": "7d0b445f96bff5b32b1b1ae411717d2b",
"sha256": "f6239ba7cfbfd488ec7bd003733df1b07895249d73771144dc4df588372ca55e"
},
"downloads": -1,
"filename": "zlogging-0.1.3.post4-pp39-none-any.whl",
"has_sig": false,
"md5_digest": "7d0b445f96bff5b32b1b1ae411717d2b",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": "<4,>=3.6",
"size": 78580,
"upload_time": "2024-08-03T10:10:48",
"upload_time_iso_8601": "2024-08-03T10:10:48.387622Z",
"url": "https://files.pythonhosted.org/packages/fb/5e/a407aba65ba4964291764d7abc79e0d7deef08e7175585611c39491b83d4/zlogging-0.1.3.post4-pp39-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0a2743350627add53189e6548d2d399424edf43e507eef22e0766dc06596763f",
"md5": "8c313bbe5ff132dabebc7d7bd7b85981",
"sha256": "743a8d50ea2e19a537aaf44c297e6a0e7011f2753b711f72bbd717e67da4358b"
},
"downloads": -1,
"filename": "zlogging-0.1.3.post4.tar.gz",
"has_sig": false,
"md5_digest": "8c313bbe5ff132dabebc7d7bd7b85981",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.6",
"size": 78425,
"upload_time": "2024-08-03T10:10:41",
"upload_time_iso_8601": "2024-08-03T10:10:41.505602Z",
"url": "https://files.pythonhosted.org/packages/0a/27/43350627add53189e6548d2d399424edf43e507eef22e0766dc06596763f/zlogging-0.1.3.post4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-03 10:10:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "JarryShaw",
"github_project": "zlogging",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "zlogging"
}