Skip to main content

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.

Metadata

Release files for sslogread 0.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sslogread 0.8.2
File Size Uploaded
sslogread-0.8.2.tar.gz 66.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for sslogread 0.8.2
File
sslogread-0.8.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
sslogread-0.8.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
sslogread-0.8.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
sslogread-0.8.2-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
sslogread-0.8.2-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details

Total release size: 3.0 MB

Release files / sslogread-0.8.2.tar.gz

Download URL sslogread-0.8.2.tar.gz
Size 66.1 kB
Tags Source
SHA-256 checksum
How to use checksums
7e77671a567ee63ab0da0f9c6fe4bbcd03223c79d470f7b2bba15f6f6bcd585f
BLAKE2b-256 checksum
How to use checksums
0492b3c115bc1dd0fa4f5479d9992ecccd235117f47f6570a36f36fa8d90b57c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release files / sslogread-0.8.2-cp312-cp312-win_amd64.whl

Download URL sslogread-0.8.2-cp312-cp312-win_amd64.whl
Size 592.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b29ec14c1ba62ab53d5b0359328ff96c0dd9c1dd2076efeb29cc0c7c72e9abfa
BLAKE2b-256 checksum
How to use checksums
c71bfc2b2807aeaa60a156b9583e7c4f5a441ec880a47b251639cdfaea3fc130
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release files / sslogread-0.8.2-cp311-cp311-win_amd64.whl

Download URL sslogread-0.8.2-cp311-cp311-win_amd64.whl
Size 592.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
cbfa9a23288b60c4798162e67488842a876e209ee8d4fd040e6838cd04a8dc6e
BLAKE2b-256 checksum
How to use checksums
51f40a07a41528ad51a0572d9abebf6cbe3a28ab6c45ee64e97de77e83c73845
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release files / sslogread-0.8.2-cp310-cp310-win_amd64.whl

Download URL sslogread-0.8.2-cp310-cp310-win_amd64.whl
Size 592.3 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
7d152b49d8ff90e57efa77725bd713ed6e4f2a32f1277c8094ac66daed2e3d84
BLAKE2b-256 checksum
How to use checksums
a43007df1539cfddf8eb445ac0faea615fc4b349e402a2e9382e074949b22873
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release files / sslogread-0.8.2-cp39-cp39-win_amd64.whl

Download URL sslogread-0.8.2-cp39-cp39-win_amd64.whl
Size 592.3 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
15f938d689f299fb4da2878d7bc08e84c1064e6529b81563bbd3cfad23fcb452
BLAKE2b-256 checksum
How to use checksums
210c7d9e9c9a43987c6cbbf336c54d38c01e3c17d819a2fa101be710e9b35949
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release files / sslogread-0.8.2-cp38-cp38-win_amd64.whl

Download URL sslogread-0.8.2-cp38-cp38-win_amd64.whl
Size 592.2 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
dc047a0ca080ea54c6498aa37692c8172e6bbb101e8c58825e59f9aa6cdd3e87
BLAKE2b-256 checksum
How to use checksums
53f68de4e581ed98a1779a6088e17527afc486ede7aa205cd0299a1e60e0999d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.8.2 This release

6 release files

0.8.1

6 release files

0.8.0

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page