Carmelo Mineo

13 papers B 1Journal 8Unranked 4
YearRankTypeTitle / Venue / Authors
2026 J jnl
J. Field Robotics
Alireza Rastegarpanah, Carmelo Mineo, Cesar Alan Contreras, Abdelaziz Shaarawy, Giovanni Paragliola, Rustam Stolkin
2025 conf
SIMPAR
Stig McArthur, Carmelo Mineo, Alastair Poole, Iain Bomphray, Jörn Mehnen
2024 conf
AIRO@AI*IA
Ignazio Infantino, Carmelo Mineo
2024 J jnl
Sensors
Yashar Javadi, Brandon Mills, Charles N. MacLeod, David Lines, Farhad Abad, Saeid Lotfian, Ali Mehmanparast, Stephen Gareth Pierce, Feargal Brennan, Anthony Gachagan, Carmelo Mineo
2022 J jnl
J. Intell. Robotic Syst.
Carmelo Mineo, Donatella Cerniglia, Alastair Poole
2022 J jnl
Sensors
Carmelo Mineo, Nicola Montinaro, Mario Fustaino, Antonio Pantano, Donatella Cerniglia
2022 B conf
RO-MAN
Carmelo Mineo, Donatella Cerniglia, Umberto Maniscalco
2022 J jnl
Sensors
Carmelo Mineo, Yashar Javadi
2019 J jnl
J. Comput. Des. Eng.
Carmelo Mineo, Stephen Gareth Pierce, Rahul Summan
2019 J jnl
Sensors
Jaime Zabalza, Zixiang Fei, Cuebong Wong, Yijun Yan, Carmelo Mineo, Erfu Yang, Tony Rodden, Jorn Mehnen, Quang-Cuong Pham, Jinchang Ren
2018 conf
BICS
Jaime Zabalza, Zixiang Fei, Cuebong Wong, Yijun Yan, Carmelo Mineo, Erfu Yang, Tony Rodden, Jorn Mehnen, Quang-Cuong Pham, Jinchang Ren
2017 J jnl
J. Comput. Des. Eng.
Carmelo Mineo, Stephen Gareth Pierce, Pascual Ian Nicholson, Ian Cooper
2016 conf
MFI
Maxim Morozov, Jonathan Riise, Rahul Summan, Stephen Gareth Pierce, Carmelo Mineo, Charles N. MacLeod, Roy Hutton Brown
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