from pip_services4_observability.count import ICounters, CompositeCounters
from pip_services4_components.refer import IReferenceable, IReferences
_console_log = True
class MyComponent(IReferenceable):
_counters: CompositeCounters = CompositeCounters()
def __init__(self):
self._counters = counters
if _console_log:
print("MyComponent has been created.")
def setReferences(self, references: IReferences):
self._counters.set_references(references)
def myMethod(self):
self._counters.increment("mycomponent.mymethod.calls", 1)
timing = self._counters.begin_timing("mycomponent.mymethod.exec_time")
try:
if _console_log:
print("Hola amigo")
print("Bonjour mon ami")
finally:
timing.end_timing()
# Cached logger
class MyCachedLogger ():
def _save(self, counters):
print("\tSaving somewhere")
from pip_services4_components.refer import References, Descriptor
from pip_services4_observability.count import LogCounters
from pip_services4_observability.log import CachedLogger
countersLog1 = LogCounters()
countersLog1.set_references(References.from_tuples(
Descriptor("pip-services", "logger", "cached", "default2", "1.0"), MyCachedLogger()))
# Prometheus
from pip_services4_prometheus.count import PrometheusCounters
from pip_services4_components.config import ConfigParams
countersProm = PrometheusCounters()
countersProm.configure(ConfigParams.from_tuples(
"connection.protocol", "http",
"connection.host", "localhost",
"connection.port", 8080
))
countersProm.open("123")
# Composite counters
from pip_services4_observability.count import CompositeCounters
counters = CompositeCounters()
counters.set_references(References.from_tuples(
Descriptor("pip-services", "counters", "logger", "default3", "1.0"), countersLog1))
counters.set_references(References.from_tuples(
Descriptor("pip-services", "counters", "prometheus", "default4", "1.0"), countersProm))
myComponent = MyComponent()
count_exec = 2
for i in range(count_exec):
myComponent.myMethod()
result = countersLog1.get_all()
print("\nMetrics to logger")
for i in result:
print("Count: " + str(i.count))
print("Min: " + str(i.min))
print("Max: " + str(i.max))
print("Average: " + str(i.average))
print("Time: " + str(i.time))
print("Name: " + i.name)
print("Type: " + str(i.type))
print("-----------------")
result = countersProm.get_all()
print("\nMetrics to Prometheus")
for i in result:
print("Count: " + str(i.count))
print("Min: " + str(i.min))
print("Max: " + str(i.max))
print("Average: " + str(i.average))
print("Time: " + str(i.time))
print("Name: " + i.name)
print("Type: " + str(i.type))
print("-----------------")