Nanbor Wang

26 papers A 2B 1C 2Misc 1Journal 7Unranked 10
YearRankTypeTitle / Venue / Authors
2011 conf
SC Companion
Steve Goldhaber, Stefan Muszala, Nanbor Wang, James F. Amundson, Eric G. Stern, Boyana Norris, Daihee Kim
2009 conf
PDCCS
Fang Liu, Nanbor Wang, Rooparani Pundaleeka, Randall Bramley
2008 C conf
DAIS
Jaiganesh Balasubramanian, Aniruddha S. Gokhale, Douglas C. Schmidt, Nanbor Wang
2007 C conf
WETICE
Svetlana G. Shasharina, Chuang Li, Nanbor Wang, Rooparani Pundaleeka, David Wade-Stein
2007 ch.
Handbook of Real-Time and Embedded Systems
Nanbor Wang, Douglas C. Schmidt, Gan Deng, Christopher D. Gill
2007 J jnl
J. Syst. Softw.
Venkita Subramonian, Gan Deng, Christopher D. Gill, Jaiganesh Balasubramanian, Liang-Jui Shen, William Otte, Douglas C. Schmidt, Aniruddha S. Gokhale, Nanbor Wang
2006 Misc conf
ISWC
Dimitre A. Dimitrov, Jeff Heflin, Abir Qasem, Nanbor Wang
2005 J jnl
Real Time Syst.
Arvind S. Krishna, Balachandran Natarajan, Aniruddha S. Gokhale, Douglas C. Schmidt, Nanbor Wang, Gautam H. Thaker
2005 ed.
ARM@Middleware
Renato Cerqueira, Nanbor Wang
2004 A conf
IEEE Real-Time and Embedded Technology and Applications Symposium
Arvind S. Krishna, Balachandran Natarajan, Aniruddha S. Gokhale, Douglas C. Schmidt, Nanbor Wang, Gautam H. Thaker
2004 conf
CoopIS/DOA/ODBASE (2)
Nanbor Wang, Christopher D. Gill, Douglas C. Schmidt, Venkita Subramonian
2004 conf
CLADE
Svetlana G. Shasharina, Nanbor Wang, John R. Cary
2004 conf
HICSS
Nanbor Wang, Christopher D. Gill
2004 conf
Adaptive and Reflective Middleware
Nanbor Wang, Fábio M. Costa, Angelo Corsaro, Geoffrey Coulson, Nalini Venkatasubramanian, Renato Cerqueira, Richard Staehli
2004 ed.
ARM@Middleware
Fabio Kon, Fábio M. Costa, Nanbor Wang, Renato Cerqueira
2004 A conf
RTSS
Venkita Subramonian, Liang-Jui Shen, Christopher D. Gill, Nanbor Wang
2003 conf
Middleware Workshops
Aniruddha S. Gokhale, Douglas C. Schmidt, Tao Lu, Balachandran Natarajan, Nanbor Wang
2003 J jnl
Microprocess. Microsystems
Nanbor Wang, Douglas C. Schmidt, Aniruddha S. Gokhale, Christopher D. Gill, Balachandran Natarajan, Craig Rodrigues, Joseph P. Loyall, Richard E. Schantz
2003 conf
WORDS
Krishnakumar Balasubramanian, Nanbor Wang, Douglas C. Schmidt
2002 J jnl
Commun. ACM
Aniruddha S. Gokhale, Douglas C. Schmidt, Balachandran Natarajan, Nanbor Wang
2001 J jnl
IEEE Distributed Syst. Online
Nanbor Wang, Douglas C. Schmidt, Michael Kircher, Kirthika Parameswaran
2001 J jnl
IEEE Commun. Mag.
Nanbor Wang, Kirthika Parameswaran, Douglas C. Schmidt, Ossama Othman
2001 conf
COOTS
Nanbor Wang, Kirthika Parameswaran, Douglas C. Schmidt, Ossama Othman
2000 B conf
COMPSAC
Nanbor Wang, Kirthika Parameswaran, Michael Kircher, Douglas C. Schmidt
2000 J jnl
IEEE Concurr.
Irfan Pyarali, Carlos O'Ryan, Douglas C. Schmidt, Nanbor Wang, Aniruddha S. Gokhale, Vishal Kachroo
1999 conf
COOTS
Irfan Pyarali, Carlos O'Ryan, Douglas C. Schmidt, Nanbor Wang, Vishal Kachroo, Aniruddha S. Gokhale
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