Idoia De-la-Iglesia

15 papers Journal 5Unranked 10
YearRankTypeTitle / Venue / Authors
2023 conf
EDGE
Paul Townend, Alberto P. Martí, Idoia De-la-Iglesia, Nikolaos Matskanis, Thomas Ohlson Timoudas, Torsten Hallmann, Antonio Lalaguna, Kaja Swat, Francesco Renzi, Dominik Bochenski, Marco Mancini, Monowar Bhuyan, Marco González-Hierro, Sébastien Dupont, Johan Kristiansson, Rubén S. Montero, Erik Elmroth, Ivá Valdés, Philippe Massonet, Daniel Olsson, Ignacio Martín Llorente, Per-Olov Östberg, Michael Abdou
2023 J jnl
IEEE Access
Neco Villegas, Luis Díez, Idoia De-la-Iglesia, Marco González-Hierro, Ramón Agüero
2022 J jnl
Veh. Commun.
Idoia De-la-Iglesia, Unai Hernández-Jayo
2018 conf
UCAmI
Unai Hernández-Jayo, Idoia De-la-Iglesia
2015 conf
VTC Fall
Idoia De-la-Iglesia, Unai Hernández-Jayo, Jagoba Perez
2015 J jnl
Sensors
Aboobeker Sidhik Koyamparambil Mammu, Unai Hernández-Jayo, Nekane Sainz, Idoia De-la-Iglesia
2015 conf
VTC Spring
Pedro M. d'Orey, Nitin Maslekar, Idoia De-la-Iglesia, Nikola K. Zahariev
2015 conf
VNC
Unai Hernández-Jayo, Jagoba Perez, Idoia De-la-Iglesia
2015 J jnl
Sensors
Unai Hernández-Jayo, Idoia De-la-Iglesia, Jagoba Perez
2014 conf
GECCO (Companion)
Eneko Osaba, Fernando Díaz, Roberto Carballedo, Idoia De-la-Iglesia, Enrique Onieva, Asier Perallos
2014 conf
VNC
Idoia De-la-Iglesia, Pedro M. d'Orey, Nitin Maslekar, Unai Hernández
2014 J jnl
CoRR
Pedro M. d'Orey, Nitin Maslekar, Idoia De-la-Iglesia, Nikola K. Zahariev
2013 conf
SIGMAP
Unai Hernández-Jayo, Idoia De-la-Iglesia
2013 conf
ICETE (Selected Papers)
Unai Hernández-Jayo, Idoia De-la-Iglesia
2013 conf
VNC
Unai Hernández-Jayo, Idoia De-la-Iglesia, Inigo Lacoume, Aboobeker Sidhik Koyamparambil Mammu
redb/logging_utils.py
← Index redb/logging_utils.py python
"""
Logging utilities and shared enums for REDB.

Contains the ImportResult enum, log formatters, and logger setup functions
used across the ingestor pipeline.
"""
import logging
from logging.handlers import QueueHandler
import os
from enum import Enum


class ImportResult(Enum):
    CORRECTLY = 0
    PARTIALLY = 1
    FAILED = 2
    PENDING = 3
    SKIPPED = 4


class FileNameFormatter(logging.Formatter):
    def format(self, record):
        record.filenameinfo = getattr(record, "filenameinfo", "unknown")
        return super().format(record)


def setup_logger(log_queue, filename):
    logger = logging.getLogger(filename)
    if not logger.handlers:
        if os.getenv("SERVER_ENV") == "prod":
            logger.setLevel(logging.INFO)
        else:
            logger.setLevel(logging.DEBUG)
        handler = QueueHandler(log_queue)
        logger.addHandler(handler)
        logger.propagate = False  # Prevent propagation to parent loggers
    return logger


def logger_thread(log_queue, log_file):
    handler = logging.FileHandler(log_file)
    formatter = FileNameFormatter(
        "%(asctime)s - %(filenameinfo)s - %(levelname)s - %(message)s"
    )
    handler.setFormatter(formatter)

    while True:
        try:
            record = log_queue.get()
            if record is None:
                break
            # Format and write the log record
            message = formatter.format(record)
            handler.stream.write(message + "\n")
            handler.stream.flush()
        except Exception:
            import traceback
            import sys

            print("[ERR] Error in logger thread:", file=sys.stderr)
            traceback.print_exc(file=sys.stderr)


def setup_direct_logger(log_file, filename, pid=None):
    """Setup a logger that writes directly to the log file without using a queue."""
    # Create a unique logger name using the process ID
    logger_name = f"{filename}_{pid}" if pid else filename
    logger = logging.getLogger(logger_name)

    if not logger.handlers:
        handler = logging.FileHandler(log_file)
        formatter = logging.Formatter("%(asctime)s - %(filenameinfo)s - %(levelname)s - %(message)s")
        handler.setFormatter(formatter)
        logger.addHandler(handler)

        if os.getenv("SERVER_ENV") == "prod":
            logger.setLevel(logging.INFO)
        else:
            logger.setLevel(logging.DEBUG)

    # Add filename info to the logger's extra info
    extra = {"filenameinfo": filename}
    logger = logging.LoggerAdapter(logger, extra)

    return logger