Obaid Ur Rehman

15 papers B 2Misc 1Journal 8Unranked 4
YearRankTypeTitle / Venue / Authors
2021 J jnl
IEEE Access
Muhammad Saqib Ali, Lei Wang, Hani Alquhayz, Obaid Ur Rehman, Guozhu Chen
2018 Misc conf
CISIS
Manzoor Ahmad, Nadeem Javaid, Iftikhar Azim Niaz, Sundas Shafiq, Obaid Ur Rehman, Hafiz Majid Hussain
2018 B conf
IWCMC
Anila Yasmeen, Nadeem Javaid, Obaid Ur Rehman, Hina Iftikhar, Muhammad Faizan Malik, Fatima J. Muhammad
2016 J jnl
Sensors
Mustafa Shakir, Obaid Ur Rehman, Mudassir Rahim, Nabil Ali Alrajeh, Zahoor Ali Khan, Mahmood Ashraf Khan, Iftikhar Azim Niaz, Nadeem Javaid
2013 conf
EUSPN/ICTH
Nadeem Javaid, Obaid Ur Rehman, Nabil Ali Alrajeh, Zahoor Ali Khan, Basit Manzoor, S. Ahmed
2013 J jnl
CoRR
Nadeem Javaid, Obaid Ur Rehman, Nabil Ali Alrajeh, Zahoor Ali Khan, Basit Manzoor, S. Ahmed
2013 J jnl
CoRR
Obaid Ur Rehman, Nadeem Javaid, Arsalan Haider, N. Amjad, A. A. Awan, M. Qamar, Zahoor Ali Khan, U. Qasim
2013 J jnl
CoRR
Basit Manzoor, Nadeem Javaid, Obaid Ur Rehman, Safdar Hussain Bouk, Syed Hassan Ahmed, Dongkyun Kim
2013 J jnl
CoRR
Obaid Ur Rehman, Nadeem Javaid, Basit Manzoor, Abdul Hafeez, Adeel Iqbal, M. Ishfaq
2013 conf
ANT/SEIT
Obaid Ur Rehman, Nadeem Javaid, Basit Manzoor, Abdul Hafeez, Adeel Iqbal, M. Ishfaq
2013 conf
RACS
Basit Manzoor, Nadeem Javaid, Obaid Ur Rehman, Safdar Hussain Bouk, Syed Hassan Ahmed, Se Hyun Park, Dongkyun Kim
2013 J jnl
CoRR
Basit Manzoor, Nadeem Javaid, Obaid Ur Rehman, Mariam Akbar, Qaisar Nadeem, Adeel Iqbal, M. Ishfaq
2013 conf
ANT/SEIT
Basit Manzoor, Nadeem Javaid, Obaid Ur Rehman, Mariam Akbar, Qaisar Nadeem, Adeel Iqbal, M. Ishfaq
2012 J jnl
CoRR
Obaid Ur Rehman, Nadeem Javaid, Ayesha Bibi, Zahoor Ali Khan
2012 B conf
TrustCom
Obaid Ur Rehman, Nadeem Javaid, Ayesha Bibi, Zahoor Ali Khan
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