Skip to main content

sslog reader library

Project description

sslogread

Python reader module for the Speedy Structured C++17 logging library

See github repository for more details.

Installation

From pypi

python3 -m pip install sslogread

From sources

git clone https://github.com/dfeneyrou/sslog
cd sslog
mkdir build && cd build
cmake .. -DSSLOG_BUILD_PYTHON_READER=ON
make -j
python3 -m pip install python/dist/sslogread-*.whl

sslogread.load

This function (the unique one of the module) is the mandatory first step to work with logs.
It reads the meta information of the logs and creates the sslogread.LogSession objects with enables logs manipulation.

Declaration

def load(path)
Parameter name Type Description
path string The path of the log folder to represent

The returned value is a LogSession object if the loading succeeded. In case of failure, an exception with textual explanation is thrown.

The LogSession objects contains only two methods that are described in the following chapters:

Method name Description
query Filters logs and return them in a structured form.
This is the main service of the module.
get_strings Returns filtered unique strings.
This service is typically used to check user-defined consistency of category, name and unit strings.

Example

import sslogread

try:
    session = sslogread.load("/path/to/my/log_folder")
except Exception as e:
    print("Loading failed:", e)

sslogread.LogSession.query

This is the main service of the LogSession object. Logs are first filtered then returned in a structured form.

Declaration

The parameters are a list of dictionaries, each of them representing a filtering rule.
A logic OR is performed between them

def LogSession.query({ level_min:"trace", level_max:"off", category:"", thread:"", format:"", must_have_buffer:False, arguments:[],
                     no_category:"", no_thread:"", no_format:"", must_not_have_buffer:False }, { ... }, ... )

A filter rule is a dictionary containing one or many of the following key-value pairs (logic AND between them):

Parameter name Type Description Default (accept all)
'level_min' string The minimum log level 'trace'
'level_max' string The maximum log level (off is above all) 'off'
'category' string Filtering-in pattern on category ' '
'thread' string Filtering-in pattern on thread name ' '
'format' string Filtering-in pattern on format string ' '
buffer_size_min integer Filtering-in if buffer length is equal or above 0
buffer_size_max integer Filtering-in if buffer length is equal or below maximum size (4GB)
'arguments' [ strings ] Filtering-in on arguments names and value
(!) No pattern matching
' '
'no_category' string Filtering-out pattern on category ' '
'no_thread' string Filtering-out pattern on thread name ' '
'no_format' string Filtering-out pattern on format string ' '

[!IMPORTANT] Filtering on arguments is not pattern based. Names and values must be exact. The syntax is: <name><operator><value> with <operator> among =, ==, >, >=, <, <=
The <operator><value> can be ommitted to filter on the existence of a named argument.
Ex: "user==georges", "id=315", "weight<=50.0", "weight"

The returned value is a chronologic list of NamedTuples. The sslogread.Log structure is:

Parameter name Type Description
level string Log level
timestampUtcNs integer Log timestamp in nanosecond since UTC epoch
category string Log category
thread string Log thread name
format string Log format string already filled with arguments
arguments list of tuples List of log arguments as tuple (name, unit, typed value)
buffer string Log buffer in base64

Examples

Display all the logs (no filtering) in text:

result = session.query()
for log in result:
   print("%d) %s" % (log['timestampUtcNs'], log['format']))

Keep only the logs with a binary buffer and on a category matching *engine*:

result = session.query( { 'buffer_size_min': 1, 'category':'*engine*' } )

Select the logs on a category matching *engine* but not on a thread matching worker*

result = session.query( { 'no_thread': "worker*", 'category':'*engine*' } )

Select the logs which possess an argument named id and another named user

result = session.query( { 'arguments': ["id", "user"] } )

[!WARNING] The argument name shall be exact, no pattern matching for argument's names and values

Select the logs which possess an argument named user which has a value github_agent

result = session.query( { 'arguments': ["user==github_agent"] } ) # Note: '=' or '==' are identical

Select the logs on category transaction and which possess an argument named id which has a value higher than 356 and lower or equal to 1000

result = session.query( { 'category': "transaction", 'arguments': ["id>356", "id<=1000"] } )

Select the logs with level >= error, with category name containing 'car', which contain both an argument named 'color' and one named 'wheels' with value >= 4

result = session.query( { 'level_min':'error', 'category':'*car*', 'arguments':['color', 'wheels>=4'] } )

Select the logs on category transaction and which possess an argument named id which has a value higher than 356 and lower or equal to 1000
OR the logs with level >= error, with category name containing 'car', which contain both an argument named 'color' and one named 'wheels' with value >= 4

result = session.query( { 'category': "transaction", 'arguments': ["id>356", "id<=1000"] },
                        { 'level_min':'error', 'category':'*car*', 'arguments':['color', 'wheels>=4'] } )

sslogread.LogSession.get_strings

This method returns a list of strings matching both a content pattern and a selection of string flags.
It is basically a query on strings.

Declaration

def LogSession.get_strings(pattern="", in_category=False, in_thread=False, in_format=False, in_arg_name=False, in_arg_value=False, in_arg_unit=False)

[!TIP] If the pattern is empty, then all strings are accepted for this criteria.
If no flag on the string type is set, then all strings are accepted for these criteria.

Example

// Get strings used as a category, matching the pattern "/scheduler/*/worker"
strings = session.get_strings(pattern="/scheduler/*/worker", in_category=True)

// Get all thread name strings
strings = session.get_strings(in_thread=True)

// Get all format strings or argument value strings, containing the word "User"
strings = session.get_strings(pattern="*User*", in_format=True, in_arg_value=True)

License

Released under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sslogread-0.8.0.tar.gz (65.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sslogread-0.8.0-cp312-cp312-win_amd64.whl (592.0 kB view details)

Uploaded CPython 3.12Windows x86-64

sslogread-0.8.0-cp311-cp311-win_amd64.whl (591.9 kB view details)

Uploaded CPython 3.11Windows x86-64

sslogread-0.8.0-cp310-cp310-win_amd64.whl (591.9 kB view details)

Uploaded CPython 3.10Windows x86-64

sslogread-0.8.0-cp39-cp39-win_amd64.whl (591.9 kB view details)

Uploaded CPython 3.9Windows x86-64

sslogread-0.8.0-cp38-cp38-win_amd64.whl (591.9 kB view details)

Uploaded CPython 3.8Windows x86-64

File details

Details for the file sslogread-0.8.0.tar.gz.

File metadata

  • Download URL: sslogread-0.8.0.tar.gz
  • Upload date:
  • Size: 65.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for sslogread-0.8.0.tar.gz
Algorithm Hash digest
SHA256 019e045c130bc57f1f79ce18ac53e1bc0e63fb1e94f4737fe5bec03557d79d58
MD5 03f08a5a6b7c546680090571365416d8
BLAKE2b-256 a810e1a47ccbe0a01564ca2e3f7fcae24269c9d72ccac88697321260fd59ed89

See more details on using hashes here.

File details

Details for the file sslogread-0.8.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: sslogread-0.8.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 592.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for sslogread-0.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 801fac5f51cf84007b0fab4e80240d34274d926d73ef72e02d39052cfdb59e39
MD5 1591144c44ef498bd03a9101f6169517
BLAKE2b-256 c3ea4b0760a7dafb1e43dbfd890dd23e8dfd00f61daba110cf6449142b18619b

See more details on using hashes here.

File details

Details for the file sslogread-0.8.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: sslogread-0.8.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 591.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for sslogread-0.8.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e9c3eb0b43f24064932a3fc7799de333a13f28e4ee22d550f2dd687131ff445b
MD5 e1396a78b967c4a41ebc0deda2f439ff
BLAKE2b-256 6857a470c9046440b3c3a9d0670643b1e24f4dfafce9ee6a1e36dd4f7fa97eed

See more details on using hashes here.

File details

Details for the file sslogread-0.8.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: sslogread-0.8.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 591.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for sslogread-0.8.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6ddfec517ea243570dddd6705b64acb5cf35716abc2cc8a084f96466efb9cc88
MD5 b679ffb31cab13a26c59e381be879193
BLAKE2b-256 87a8f99bb85847215c68cdce4c84ae151ebc27d3ad326d065183d12f3bf83f7f

See more details on using hashes here.

File details

Details for the file sslogread-0.8.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: sslogread-0.8.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 591.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for sslogread-0.8.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 aa2b45628c4e50c916eadd95cf86c7b1bf2c94f6862655a49ace5cdeb65cd21b
MD5 deaeee3632ab21914c0f02aea858d6ee
BLAKE2b-256 c74af579dbbd4b0fc4c276279f02a6d1fa741f7a893271c79671a99e39cc1601

See more details on using hashes here.

File details

Details for the file sslogread-0.8.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: sslogread-0.8.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 591.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for sslogread-0.8.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 594d5cf077d779f6bf5c9270ab7acda003f844f687a7c23381f7f26bb60c158e
MD5 be524f92b46767d1d29dc3c0dc24d363
BLAKE2b-256 b90e7313e34b77950b998e651edde21fb20baeb239c84e62b694e29dc77b56de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page