ploomber_core.telemetry#
- class ploomber_core.telemetry.Telemetry(api_key, package_name, version, *, print_cloud_message=True)#
- log_call(action=None, payload=False, log_args=False, ignore_args=None, group=None)#
Log function call
- Parameters:
action (str, default=None) – The action taken by the user. If None, it’ll use the function’s name
payload (bool, default=False) – If True, the function will be called with payload as its first argument (a dictionary), yoyu may add values to it and they will be logged
log_args (bool, default=False) – If True, function parameters a logger (but only bool, int, float, str, tuple, and set)
ignore_args (set, default=None) – A set of parameters to ignore, it only has effect when log_args=True
group (str, default=None) – An arbitrary string to group events. You may use this to group calls to methods in the same class
Examples
Log function call:
>>> from ploomber_core.telemetry import Telemetry >>> telemetry = Telemetry("APIKEY", "packagename", "0.1") >>> @telemetry.log_call() ... def add(x, y): ... return x + y >>> add(x=1, y=2) 3
Customize action name (by default, it’ll use the name of the function):
>>> from ploomber_core.telemetry import Telemetry >>> telemetry = Telemetry("APIKEY", "packagename", "0.1") >>> @telemetry.log_call(action="sum") ... def add(x, y): ... return x + y >>> add(x=1, y=2) 3
Log extra data:
>>> from ploomber_core.telemetry import Telemetry >>> telemetry = Telemetry("APIKEY", "packagename", "0.1") >>> @telemetry.log_call(payload=True) ... def add(payload, x, y): ... payload["key"] = "value to log" ... return x + y >>> add(x=1, y=2) 3
Log input arguments:
>>> from ploomber_core.telemetry import Telemetry >>> telemetry = Telemetry("APIKEY", "packagename", "0.1") >>> @telemetry.log_call(log_args=True) ... def add(x, y): ... return x + y >>> add(x=1, y=2) 3
Ignore some input arguments:
>>> from ploomber_core.telemetry import Telemetry >>> telemetry = Telemetry("APIKEY", "packagename", "0.1") >>> @telemetry.log_call(log_args=True, ignore_args={"y"}) ... def add(x, y): ... return x + y >>> add(x=1, y=2) 3
Log method calls in a class (creating a group will add the class name to all actions):
>>> from ploomber_core.telemetry import Telemetry >>> telemetry = Telemetry("APIKEY", "packagename", "0.1") >>> telemetry_my_class = telemetry.create_group("MyClass") >>> class MyClass: ... @telemetry_my_class.log_call() ... def add(self, x, y): ... return x + y >>> obj = MyClass() >>> obj.add(x=1, y=2) 3
Unit testing (check the
_telemetryattribute):>>> from ploomber_core.telemetry import Telemetry >>> telemetry = Telemetry("APIKEY", "packagename", "0.1") >>> @telemetry.log_call() ... def add(x, y): ... return x + y >>> add._telemetry["action"] 'packagename-add' >>> add._telemetry["payload"] False >>> add._telemetry["log_args"] False >>> add._telemetry["ignore_args"] set() >>> add._telemetry["group"]