Rachid Hadjidj

32 papers A 2B 2C 2Misc 1Journal 18Unranked 7
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans Autom. Sci. Eng.
Drifa Hadjidj, Rachid Hadjidj, Abdelhak Belhi, Razika Belkacemi, Habiba Drias
2024 J jnl
IEEE Trans Autom. Sci. Eng.
Rachid Hadjidj
2022 B conf
ENASE
Amel Benna, Fatma Masmoudi, Mohamed Sellami, Zakaria Maamar, Rachid Hadjidj
2022 J jnl
IEEE Trans. Ind. Informatics
Abdullah Albarakati, Chantale Robillard, Mark Karanfil, Marthe Kassouf, Mourad Debbabi, Amr M. Youssef, Mohsen Ghafouri, Rachid Hadjidj
2020 J jnl
IEEE Trans. Ind. Informatics
Bassam Moussa, Marthe Kassouf, Rachid Hadjidj, Mourad Debbabi, Chadi Assi
2020 J jnl
IEEE/ACM Trans. Netw.
Zina Chkirbene, Rachid Hadjidj, Sebti Foufou, Ridha Hamila
2019 conf
SmartGridComm
Abdullah Albarakati, Chantale Robillard, Mark Karanfil, Marthe Kassouf, Rachid Hadjidj, Mourad Debbabi, Amr M. Youssef
2019 J jnl
J. Math. Imaging Vis.
Ahmed Ben Said, Rachid Hadjidj, Sebti Foufou
2018 J jnl
CoRR
Ahmed Ben Said, Rachid Hadjidj, Sebti Foufou
2018 J jnl
Comput. Commun.
Zina Chkirbene, Ala Gouissem, Rachid Hadjidj, Sebti Foufou, Ridha Hamila
2018 B conf
PIMRC
Zina Chkirbene, Ala Gouissem, Rachid Hadjidj, Ridha Hamila, Sebti Foufou
2017 C conf
CIBCB
Imene Mecheter, Rachid Hadjidj, Sebti Foufou
2017 J jnl
Pattern Anal. Appl.
Ahmed Ben Said, Rachid Hadjidj, Sebti Foufou
2017 Misc conf
CISS
Ahmed Ben Said, Rachid Hadjidj, Sebti Foufou, Mongi A. Abidi
2017 A conf
ICWS
Kashif Ali, Hai Dong, Athman Bouguettaya, Abdelkarim Erradi, Rachid Hadjidj
2017 A conf
ICWS
Tooba Aamir, Athman Bouguettaya, Hai Dong, Abdelkarim Erradi, Rachid Hadjidj
2016 J jnl
CoRR
Ahmed Ben Said, Rachid Hadjidj, Kamal Eddine Melkemi, Sebti Foufou
2016 J jnl
Digit. Signal Process.
Ahmed Ben Said, Rachid Hadjidj, Kamal Eddine Melkemi, Sebti Foufou
2014 conf
IPTA
Ahmed Ben Said, Rachid Hadjidj, Sebti Foufou
2013 conf
PNSE+ModPE
Rachid Hadjidj, Hanifa Boucheneb
2013 conf
Feedback Computing
Asim Ali, Rui Jia, Abdelkarim Erradi, Sherif Abdelwahed, Rachid Hadjidj
2011 J jnl
IEEE Trans. Computers
Rachid Hadjidj, Hanifa Boucheneb
2010 J jnl
Electron. Commun. Eur. Assoc. Softw. Sci. Technol.
Robert Charpentier, Mourad Debbabi, Dima Alhadidi, Azzam Mourad, Nadia Belblidia, Amine Boukhtouta, Aiman Hanna, Rachid Hadjidj, Hakim Idrissi Kaitouni, Marc-André Laverdière, Hai Zhou Ling, Syrine Tlili, Xiaochun Yang, Zhenrong Yang
2009 J jnl
Theor. Comput. Sci.
Rachid Hadjidj, Hanifa Boucheneb
2009 J jnl
Digit. Investig.
Rachid Hadjidj, Mourad Debbabi, Hakim Lounis, Farkhund Iqbal, Adam Szporer, Djamel Benredjem
2009 conf
OTM Conferences (2)
Syrine Tlili, Xiaochun Yang, Rachid Hadjidj, Mourad Debbabi
2008 J jnl
Digit. Investig.
Farkhund Iqbal, Rachid Hadjidj, Benjamin C. M. Fung, Mourad Debbabi
2008 J jnl
Int. J. Softw. Tools Technol. Transf.
Rachid Hadjidj, Hanifa Boucheneb
2008 C conf
PST
Rachid Hadjidj, Xiaochun Yang, Syrine Tlili, Mourad Debbabi
2006 conf
ACSD
Rachid Hadjidj, Hanifa Boucheneb
2006 J jnl
Int. J. Embed. Syst.
Hanifa Boucheneb, Rachid Hadjidj
2005 conf
ACSD
Rachid Hadjidj, Hanifa Boucheneb
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