diff --git a/README.md b/README.md index a08ea052008747981c7d4179752f26f266ff4062..4abcbb1aa615f6f60889bba49136141c054e58af 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ though binary wheels for: * Linux [manylinux2014]: * x86_64: * Python 3.8 + * Python 3.9 * armv7l: * Python 3.8 @@ -47,11 +48,14 @@ python setup.py bdist_wheel Then copy your resulting wheel and install it via pip on the target system. +Be aware that tempsdb does logging. If necessary, setting log level of +logger `tempsdb` to WARN will eliminate all warnings that tempsdb outputs. + # Changelog ## v0.6.3 -* _TBA_ +* added logging for opening and closing series ## v0.6.2 diff --git a/docs/usage.rst b/docs/usage.rst index a535da6f87dd0e5b89f7db26d2ac7d4f0fcca98c..4c3876be159c511cb00cce2a20673c5e6365c926 100644 --- a/docs/usage.rst +++ b/docs/usage.rst @@ -48,3 +48,9 @@ Appending the data is done via :meth:`~tempsdb.series.TimeSeries.append`. Since allocated in entire pages, so your files will be padded to a page in size. This makes writes quite fast, as in 99.9% cases it is just a memory operation. +Logging +------- + +tempsdb will log when opening and closing series. To prevent this from happening, just call: + +.. autofunction:: tempsdb.database.disable_logging diff --git a/setup.cfg b/setup.cfg index 4e4a4c07a8c963378302255cca244c1abc5768b9..8f3ac7704a66e01702ed37441994a771167332e8 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ # coding: utf-8 [metadata] name = tempsdb -version = 0.6.3a1 +version = 0.6.3 long-description = file: README.md long-description-content-type = text/markdown; charset=UTF-8 license_files = LICENSE diff --git a/tempsdb/database.pxd b/tempsdb/database.pxd index 24594a7434590859cfc677ffa0e791b6202491ab..f6b4df768c13b37289adb751037e28eb1fb1e2cc 100644 --- a/tempsdb/database.pxd +++ b/tempsdb/database.pxd @@ -38,4 +38,4 @@ cdef class Database: cpdef int sync(self) except -1 cpdef Database create_database(str path) - +cpdef int disable_logging() except -1 diff --git a/tempsdb/database.pyx b/tempsdb/database.pyx index 7391449cee939b9568e1151c402d973904f125c6..b7146519596fee4b479a221ba27162a9b0f6fe92 100644 --- a/tempsdb/database.pyx +++ b/tempsdb/database.pyx @@ -1,4 +1,5 @@ import os +import logging import shutil import threading import warnings @@ -10,6 +11,13 @@ from .series cimport TimeSeries, create_series from .varlen cimport VarlenSeries from .metadata cimport read_meta_at, write_meta_at + +cpdef int disable_logging() except -1: + """Disable logging of tempsdb""" + logging.getLogger('tempsdb').setLevel(logging.WARN) + return 0 + + cdef class Database: """ A basic TempsDB object. diff --git a/tempsdb/series.pyx b/tempsdb/series.pyx index b0ba3981d723b480d4e34e21e117e3c903bf03f5..c33cc2c7c49f80823baa27c6150fe492abfa8484 100644 --- a/tempsdb/series.pyx +++ b/tempsdb/series.pyx @@ -4,6 +4,7 @@ import typing as tp import shutil import threading import warnings +import logging from .chunks.base cimport Chunk from .chunks.normal cimport NormalChunk @@ -13,7 +14,9 @@ from .exceptions import DoesNotExist, Corruption, InvalidState, AlreadyExists from .metadata cimport read_meta_at, write_meta_at -cdef set metadata_file_names = {'metadata.txt', 'metadata.minijson'} +cdef: + set metadata_file_names = {'metadata.txt', 'metadata.minijson'} + object logger = logging.getLogger(__name__) cdef class TimeSeries: @@ -96,6 +99,7 @@ cdef class TimeSeries: return 0 def __init__(self, str path, str name, bint use_descriptor_based_access = False): + logger.info('Opening new time series at %s called %s', path, name) self.descriptor_based_access = use_descriptor_based_access self.mpm = None self.name = name @@ -281,6 +285,7 @@ cdef class TimeSeries: self.mpm.cancel() self.mpm = None self.closed = True + logger.info('Closed time series at %s called %s', self.path, self.name) return 0 cdef unsigned int get_index_of_chunk_for(self, unsigned long long timestamp): diff --git a/tempsdb/varlen.pyx b/tempsdb/varlen.pyx index 964b246997854867b4b89644c99cb4281ee75a3b..c187bc49565ff1b1a5582f3321a127f9dc7ec28b 100644 --- a/tempsdb/varlen.pyx +++ b/tempsdb/varlen.pyx @@ -1,4 +1,5 @@ import os +import logging import shutil import typing as tp import struct @@ -7,8 +8,9 @@ import warnings from .chunks.base cimport Chunk from .exceptions import Corruption, AlreadyExists, StillOpen from .iterators cimport Iterator -from tempsdb.series cimport TimeSeries, create_series +from .series cimport TimeSeries, create_series +cdef object logger = logging.getLogger(__name__) cdef class VarlenEntry: """ @@ -495,6 +497,7 @@ cdef class VarlenSeries: it.close() def __init__(self, str path, str name, bint use_descriptor_based_access = False): + logger.info('Opening varlen series at %s called %s', path, name) self.closed = False self.mmap_enabled = not use_descriptor_based_access self.path = path @@ -690,6 +693,7 @@ cdef class VarlenSeries: cdef TimeSeries series for series in self.series: series.close() + logger.info('Closed varlen series at %s called %s', self.path, self.name) return 0 cpdef int trim(self, unsigned long long timestamp) except -1: