Spaces:
Sleeping
Sleeping
import dataclasses | |
import json | |
import logging | |
from codecarbon.external.logger import logger | |
from codecarbon.output_methods.base_output import BaseOutput | |
from codecarbon.output_methods.emissions_data import EmissionsData | |
class LoggerOutput(BaseOutput): | |
""" | |
Send emissions data to a logger | |
""" | |
def __init__(self, logger, severity=logging.INFO): | |
self.logger = logger | |
self.logging_severity = severity | |
def out(self, total: EmissionsData, delta: EmissionsData): | |
try: | |
payload = dataclasses.asdict(total) | |
self.logger.log(self.logging_severity, msg=json.dumps(payload)) | |
except Exception as e: | |
logger.error(e, exc_info=True) | |
def live_out(self, total: EmissionsData, delta: EmissionsData): | |
self.out(total, delta) | |
class GoogleCloudLoggerOutput(LoggerOutput): | |
""" | |
Send emissions data to GCP Cloud Logging | |
""" | |
def out(self, total: EmissionsData, delta: EmissionsData): | |
try: | |
payload = dataclasses.asdict(total) | |
self.logger.log_struct(payload, severity=self.logging_severity) | |
except Exception as e: | |
logger.error(e, exc_info=True) | |
def live_out(self, total: EmissionsData, delta: EmissionsData): | |
self.out(total, delta) | |