Skip to content

Commit feee402

Browse files
committed
Replace logger object with self.log
1 parent c14d76c commit feee402

3 files changed

Lines changed: 22 additions & 49 deletions

File tree

src/jupyterhub_cost_monitoring/aws.py

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,8 @@
2424
SERVICE_COMPONENT_MAP,
2525
)
2626
from .date_utils import DateRange
27-
from .logs import get_logger
2827
from .prometheus import Prometheus
2928

30-
logger = get_logger(__name__)
31-
3229

3330
class AWSCostExplorer(LoggingConfigurable):
3431
@functools.cache
@@ -37,7 +34,7 @@ def _get_component_name(self, service_name):
3734
return SERVICE_COMPONENT_MAP[service_name]
3835
else:
3936
# only printed once per service name thanks to memoization
40-
logger.warning(
37+
self.log.warning(
4138
f"Service '{service_name}' not categorized as a component yet"
4239
)
4340
return "other"
@@ -255,7 +252,7 @@ def _process_home_storage_costs(
255252
0.0, current_compute_cost - home_storage_cost
256253
)
257254
compute_entry["cost"] = f"{new_compute_cost:.2f}"
258-
logger.debug(
255+
self.log.debug(
259256
f"Adjusted compute cost for {date}: {current_compute_cost:.2f} -> {new_compute_cost:.2f}"
260257
)
261258

@@ -267,7 +264,7 @@ def _process_home_storage_costs(
267264
current_home_storage_cost + home_storage_cost
268265
)
269266
home_storage_entry["cost"] = f"{new_home_storage_cost:.2f}"
270-
logger.debug(
267+
self.log.debug(
271268
f"Updated home storage cost for {date}: {current_home_storage_cost:.2f} -> {new_home_storage_cost:.2f}"
272269
)
273270
else:
@@ -281,7 +278,7 @@ def _process_home_storage_costs(
281278
if date not in entries_by_date:
282279
entries_by_date[date] = {}
283280
entries_by_date[date]["home storage"] = new_entry
284-
logger.debug(
281+
self.log.debug(
285282
f"Added new home storage entry for {date}: {home_storage_cost:.2f}"
286283
)
287284

@@ -340,7 +337,7 @@ def _process_core_costs(self, entries_by_date, core_cost_response):
340337
entries_by_date: Dictionary indexed by date containing component entries
341338
core_cost_response: AWS Cost Explorer response for core costs
342339
"""
343-
logger.debug(
340+
self.log.debug(
344341
f"Processing core costs: {pformat(core_cost_response['ResultsByTime'])}"
345342
)
346343
for core_e in core_cost_response["ResultsByTime"]:
@@ -360,7 +357,7 @@ def _process_core_costs(self, entries_by_date, core_cost_response):
360357
current_compute_cost = float(compute_entry["cost"])
361358
new_compute_cost = max(0.0, current_compute_cost - core_cost)
362359
compute_entry["cost"] = f"{new_compute_cost:.2f}"
363-
logger.debug(
360+
self.log.debug(
364361
f"Adjusted compute cost for {date} (core cost): {current_compute_cost:.2f} -> {new_compute_cost:.2f}"
365362
)
366363

@@ -370,7 +367,7 @@ def _process_core_costs(self, entries_by_date, core_cost_response):
370367
current_core_cost = float(core_entry["cost"])
371368
new_core_cost = current_core_cost + core_cost
372369
core_entry["cost"] = f"{new_core_cost:.2f}"
373-
logger.debug(
370+
self.log.debug(
374371
f"Updated core cost for {date}: {current_core_cost:.2f} -> {new_core_cost:.2f}"
375372
)
376373
else:
@@ -384,7 +381,7 @@ def _process_core_costs(self, entries_by_date, core_cost_response):
384381
if date not in entries_by_date:
385382
entries_by_date[date] = {}
386383
entries_by_date[date]["core"] = new_entry
387-
logger.debug(f"Added new core entry for {date}: {core_cost:.2f}")
384+
self.log.debug(f"Added new core entry for {date}: {core_cost:.2f}")
388385

389386
@ttl_lru_cache(seconds_to_live=3600)
390387
def query_total_costs_per_component(
@@ -424,7 +421,7 @@ def query_total_costs_per_component(
424421

425422
processed_response = []
426423

427-
logger.debug(f"Processing response: {pformat(response['ResultsByTime'])}")
424+
self.log.debug(f"Processing response: {pformat(response['ResultsByTime'])}")
428425

429426
for e in response["ResultsByTime"]:
430427
# coalesce service costs to component costs
@@ -438,7 +435,7 @@ def query_total_costs_per_component(
438435
)
439436

440437
# Filter to specific component if requested
441-
logger.debug(f"Component costs before filtering: {component_costs}")
438+
self.log.debug(f"Component costs before filtering: {component_costs}")
442439
if component:
443440
component_costs = {
444441
k: v for k, v in component_costs.items() if k == component
@@ -463,7 +460,7 @@ def query_total_costs_per_component(
463460
entries_by_date[date] = {}
464461
entries_by_date[date][entry["component"]] = entry
465462

466-
logger.debug(f"Entries by date before deduplication: {entries_by_date}\n\n")
463+
self.log.debug(f"Entries by date before deduplication: {entries_by_date}\n\n")
467464

468465
# EC2 - Other is a service that can include costs for EBS volumes and snapshots
469466
# By default, these costs are mapped to the compute component, but
@@ -489,7 +486,7 @@ def query_total_costs_per_component(
489486
entries_by_date, home_storage_ebs_cost_response
490487
)
491488

492-
logger.debug(
489+
self.log.debug(
493490
f"Entries by date after home storage processing: {entries_by_date}\n\n"
494491
)
495492

@@ -511,7 +508,7 @@ def query_total_costs_per_component(
511508
# Process core costs and adjust compute costs accordingly
512509
self._process_core_costs(entries_by_date, core_cost_response)
513510

514-
logger.debug(
511+
self.log.debug(
515512
f"Entries by date after core cost processing: {entries_by_date}\n\n"
516513
)
517514

@@ -633,7 +630,7 @@ def query_total_costs_per_user(
633630
)
634631
top_users = sorted(user_costs.items(), key=lambda x: -x[1])[:limit]
635632
top_user_set = {user for user, _ in top_users}
636-
logger.debug(f"Top users: {top_users}")
633+
self.log.debug(f"Top users: {top_users}")
637634
results = [entry for entry in results if entry["user"] in top_user_set]
638635
results = self.prometheus._filter_json(
639636
results, hub=hub, component=component, user=user, usergroup=usergroup
@@ -660,12 +657,12 @@ def query_total_costs_per_group(
660657
try:
661658
results = self.query_total_costs_per_user(date_range=date_range)
662659
except Exception as e:
663-
logger.exception(f"HTTP request failed: {e}")
660+
self.log.exception(f"HTTP request failed: {e}")
664661
raise
665662
response = {}
666663
for r in results:
667664
key = (r["date"], r["usergroup"])
668-
logger.debug(f"Key: {key}, Value: {r['value']}")
665+
self.log.debug(f"Key: {key}, Value: {r['value']}")
669666
response[key] = response.get(key, 0) + float(r["value"])
670667

671668
final_response = [

src/jupyterhub_cost_monitoring/logs.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/jupyterhub_cost_monitoring/prometheus.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
from .cache import ttl_lru_cache
1616
from .const_usage import USAGE_MAP, USER_GROUP_INFO
1717
from .date_utils import DateRange, get_now_date
18-
from .logs import get_logger
19-
20-
logger = get_logger(__name__)
2118

2219

2320
class Prometheus(LoggingConfigurable):
@@ -76,7 +73,7 @@ def query(self, query: str, date_range: DateRange, step: str) -> requests.Respon
7673
with requests.get(
7774
query_api, params=parameters, auth=prometheus_auth
7875
) as response:
79-
logger.info(f"Querying Prometheus: {response.url}")
76+
self.log.info(f"Querying Prometheus: {response.url}")
8077
response.raise_for_status()
8178
result = response.json()
8279
return result
@@ -172,7 +169,7 @@ def _process_response(
172169
entry["user"], escape_char="-"
173170
)
174171
except ValueError:
175-
logger.warning(
172+
self.log.warning(
176173
f"Could not unescape username {entry['user']} for home storage component."
177174
)
178175
continue
@@ -288,7 +285,7 @@ def query_user_groups(
288285
try:
289286
response = self.query(USER_GROUP_INFO, date_range, step="1d")
290287
except requests.exceptions.RequestException as e:
291-
logger.exception(f"HTTP request failed: {e}")
288+
self.log.exception(f"HTTP request failed: {e}")
292289
raise
293290
result = self._process_user_groups(response, hub_name, user_name, group_name)
294291
return result
@@ -333,7 +330,7 @@ def query_users_with_multiple_groups(
333330
try:
334331
response = self.query_user_groups(hub_name=hub_name, user_name=user_name)
335332
except requests.exceptions.RequestException as e:
336-
logger.exception(f"HTTP request failed: {e}")
333+
self.log.exception(f"HTTP request failed: {e}")
337334
raise
338335
grouped = defaultdict(
339336
lambda: {
@@ -372,7 +369,7 @@ def query_users_with_no_groups(
372369
try:
373370
response = self.query_user_groups(hub_name=hub_name, user_name=user_name)
374371
except requests.exceptions.RequestException as e:
375-
logger.exception(f"HTTP request failed: {e}")
372+
self.log.exception(f"HTTP request failed: {e}")
376373
raise
377374
grouped = defaultdict(lambda: {"username": None, "hub": None})
378375
for entry in response:
@@ -381,7 +378,7 @@ def query_users_with_no_groups(
381378
grouped[key]["username"] = entry["username"]
382379
grouped[key]["hub"] = entry["hub"]
383380
if entry["usergroup"] == "none":
384-
logger.debug(
381+
self.log.debug(
385382
f"User {entry['username']} in hub {entry['hub']} has no groups."
386383
)
387384
grouped[key]["has_none"] = True

0 commit comments

Comments
 (0)