Skip to content

Commit 7e2c62b

Browse files
authored
feat: Add debug logger (#11)
SDK Clients can enable/disable logs using: 1. logging.ini or 2. By adding following lines of code to their application ``` logger = logging.getLogger('momentosdk') logger.setLevel(logging.DEBUG) consoleHandler = logging.StreamHandler() consoleHandler.setLevel(logging.DEBUG) logger.addHandler(consoleHandler) formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s: %(message)s') consoleHandler.setFormatter(formatter) ```
1 parent 88fe370 commit 7e2c62b

File tree

6 files changed

+32
-0
lines changed

6 files changed

+32
-0
lines changed

src/momento/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import logging
2+
3+
logging.getLogger('momentosdk').addHandler(logging.NullHandler())

src/momento/_cache_service_errors_converter.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import grpc
22
from . import errors
3+
from . import _momento_logger
34
from momento_wire_types import cacheclient_pb2 as cache_client_types
45

56
__rpc_to_error = {
@@ -30,6 +31,7 @@ def convert(exception):
3031

3132

3233
def convert_ecache_result(ecache_result, message):
34+
_momento_logger.debug(f'Converting ECacheResult: {ecache_result} to error.')
3335
if (ecache_result in __ecache_result_to_error):
3436
return __ecache_result_to_error[ecache_result](message)
3537
return errors.InternalServerError(

src/momento/_momento_logger.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import logging
2+
3+
logger = logging.getLogger("momentosdk")
4+
def info(msg):
5+
logger.info(msg)
6+
7+
def debug(msg):
8+
logger.debug(msg)

src/momento/cache.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from . import _cache_name_interceptor
1010
from . import errors
1111
from . import cache_operation_responses as cache_sdk_resp
12+
from . import _momento_logger
1213

1314

1415
class Cache:
@@ -32,9 +33,12 @@ def __init__(self, auth_token, cache_name, endpoint, default_ttlSeconds):
3233
# resource management for calls that need get or create functionality.
3334
def _connect(self) :
3435
try:
36+
_momento_logger.debug('Initializing connection with Cache Service')
3537
self.get(uuid.uuid1().bytes)
38+
_momento_logger.debug('Success: Connection Initialized with Cache Service')
3639
return self
3740
except Exception as e:
41+
_momento_logger.debug(f'Cache Service Connect Failed with: {e}')
3842
raise _cache_service_errors_converter.convert(e) from None
3943

4044
def __enter__(self):
@@ -45,6 +49,7 @@ def __exit__(self, exc_type, exc_value, exc_traceback):
4549

4650
def set(self, key, value, ttl_seconds=None):
4751
try:
52+
_momento_logger.debug(f'Issuing a set request with key {key}')
4853
item_ttl_seconds = self._default_ttlSeconds if ttl_seconds is None else ttl_seconds
4954
self._validate_ttl(item_ttl_seconds)
5055
set_request = cache_client_types.SetRequest()
@@ -54,19 +59,24 @@ def set(self, key, value, ttl_seconds=None):
5459
value, 'Unsupported type for value: ')
5560
set_request.ttl_milliseconds = item_ttl_seconds * 1000
5661
response = self._client.Set(set_request)
62+
_momento_logger.debug(f'Set succeeded for key: {key}')
5763
return cache_sdk_resp.CacheSetResponse(response,
5864
set_request.cache_body)
5965
except Exception as e:
66+
_momento_logger.debug(f'Set failed for {key} with response: {e}')
6067
raise _cache_service_errors_converter.convert(e)
6168

6269
def get(self, key):
6370
try:
71+
_momento_logger.debug(f'Issuing a get request with key {key}')
6472
get_request = cache_client_types.GetRequest()
6573
get_request.cache_key = self._asBytes(
6674
key, 'Unsupported type for key: ')
6775
response = self._client.Get(get_request)
76+
_momento_logger.debug(f'Received a get response for {key}')
6877
return cache_sdk_resp.CacheGetResponse(response)
6978
except Exception as e:
79+
_momento_logger.debug(f'Get failed for {key} with response: {e}')
7080
raise _cache_service_errors_converter.convert(e)
7181

7282
def _asBytes(self, data, errorMessage):

src/momento/cache_operation_responses.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from enum import Enum
22
from momento_wire_types import cacheclient_pb2 as cache_client_types
33
from . import _cache_service_errors_converter as error_converter
4+
from . import _momento_logger
45

56

67
class CacheResult(Enum):
@@ -12,6 +13,7 @@ class CacheSetResponse:
1213
def __init__(self, grpc_set_response, value):
1314
self._value = value
1415
if (grpc_set_response.result is not cache_client_types.Ok):
16+
_momento_logger.debug(f'Set received unsupported ECacheResult {grpc_set_response.result}')
1517
raise error_converter.convert_ecache_result(
1618
grpc_set_response.result, grpc_set_response.message)
1719

@@ -28,6 +30,7 @@ def __init__(self, grpc_get_response):
2830

2931
if (grpc_get_response.result is not cache_client_types.Hit
3032
and grpc_get_response.result is not cache_client_types.Miss):
33+
_momento_logger.debug(f'Get received unsupported ECacheResult: {grpc_get_response.result}')
3134
raise error_converter.convert_ecache_result(
3235
grpc_get_response.result, grpc_get_response.message)
3336

src/momento/momento.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from .cache_operation_responses import CreateCacheResponse
1212
from .cache_operation_responses import DeleteCacheResponse
1313
from .cache_operation_responses import ListCachesResponse
14+
from . import _momento_logger
1415

1516

1617
class Momento:
@@ -36,18 +37,22 @@ def __exit__(self, exc_type, exc_value, exc_traceback):
3637

3738
def create_cache(self, cache_name):
3839
try:
40+
_momento_logger.debug(f'Creating cache with name: {cache_name}')
3941
request = CreateCacheRequest()
4042
request.cache_name = cache_name
4143
return CreateCacheResponse(self._client.CreateCache(request))
4244
except Exception as e:
45+
_momento_logger.debug(f'Failed to create cache: {cache_name} with exception:{e}')
4346
raise _cache_service_errors_converter.convert(e) from None
4447

4548
def delete_cache(self, cache_name):
4649
try:
50+
_momento_logger.debug(f'Deleting cache with name: {cache_name}')
4751
request = DeleteCacheRequest()
4852
request.cache_name = cache_name
4953
return DeleteCacheResponse(self._client.DeleteCache(request))
5054
except Exception as e:
55+
_momento_logger.debug(f'Failed to delete cache: {cache_name} with exception:{e}')
5156
raise _cache_service_errors_converter.convert(e) from None
5257

5358
def get_cache(self, cache_name, ttl_seconds, create_if_absent=False):
@@ -59,6 +64,7 @@ def get_cache(self, cache_name, ttl_seconds, create_if_absent=False):
5964
if (not create_if_absent):
6065
raise e
6166

67+
_momento_logger.debug(f'create_if_absent={create_if_absent}')
6268
self.create_cache(cache_name)
6369
return cache._connect()
6470

0 commit comments

Comments
 (0)