Rajendra Bhatt

34 papers C 6Journal 23Unranked 5
YearRankTypeTitle / Venue / Authors
2024 C conf
IGARSS
Rajendra Bhatt, Yolanda Shea, Wan Wu, Qiguang Yang, Daniel Goldin, Matthew Little, Xu Liu, Nitchie Smith
2024 J jnl
Remote. Sens.
Aisheng Wu, Xiaoxiong Xiong, Qiaozhen Mu, Amit Angal, Rajendra Bhatt, Yolanda Shea
2024 C conf
IGARSS
David R. Doelling, Conor O. Haney, Prathana Khakurel, Rajendra Bhatt, Benjamin R. Scarino, Arun Gopalan
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
Wan Wu, Xu Liu, Qiguang Yang, Jon C. Currey, Aron Bartle, Adam Thurston, Natividad Manalo-Smith, Yolanda L. Shea, Rajendra Bhatt
2022 J jnl
Remote. Sens.
Aisheng Wu, Xiaoxiong Xiong, Rajendra Bhatt, Conor O. Haney, David R. Doelling, Amit Angal, Qiaozhen Mu
2021 J jnl
Remote. Sens.
Rajendra Bhatt, David R. Doelling, Odele Coddington, Benjamin R. Scarino, Arun Gopalan, Conor O. Haney
2020 J jnl
Remote. Sens.
Dennis L. Helder, David R. Doelling, Rajendra Bhatt, Taeyoung Choi, Julia A. Barsi
2020 J jnl
Remote. Sens.
Benjamin R. Scarino, David R. Doelling, Rajendra Bhatt, Arun Gopalan, Conor O. Haney
2020 J jnl
IEEE Trans. Geosci. Remote. Sens.
Rajendra Bhatt, David R. Doelling, Amit Angal, Xiaoxiong Xiong, Conor O. Haney, Benjamin R. Scarino, Aisheng Wu, Arun Gopalan
2019 C conf
IGARSS
Benjamin R. Scarino, David R. Doelling, Conor O. Haney, Rajendra Bhatt, Arun Gopalan
2019 J jnl
Remote. Sens.
David R. Doelling, Konstantin V. Khlopenkov, Conor O. Haney, Rajendra Bhatt, Brent Bos, Benjamin R. Scarino, Arun Gopalan, Dante S. Lauretta
2019 J jnl
Remote. Sens.
David R. Doelling, Conor O. Haney, Rajendra Bhatt, Benjamin R. Scarino, Arun Gopalan
2018 J jnl
Remote. Sens.
Rajendra Bhatt, David R. Doelling, Conor O. Haney, Benjamin R. Scarino, Arun Gopalan
2018 C conf
IGARSS
Rajendra Bhatt, David R. Doelling, Benjamin R. Scarino, Conor O. Haney, Arun Gopalan
2018 conf
Earth Observing Systems
Benjamin R. Scarino, David R. Doelling, Arun Gopalan, Thad Chee, Rajendra Bhatt, Conor O. Haney
2018 J jnl
Remote. Sens.
David R. Doelling, Conor O. Haney, Rajendra Bhatt, Benjamin R. Scarino, Arun Gopalan
2018 J jnl
IEEE Trans. Geosci. Remote. Sens.
Amit Angal, Xiaoxiong Xiong, Qiaozhen Mu, David R. Doelling, Rajendra Bhatt, Aisheng Wu
2017 C conf
IGARSS
Rajendra Bhatt, David R. Doelling, Benjamin R. Scarino, Arun Gopalan, Patrick Minnis, Kristopher M. Bedka, Conor O. Haney
2017 J jnl
Remote. Sens.
Rajendra Bhatt, David R. Doelling, Benjamin R. Scarino, Conor O. Haney, Arun Gopalan
2017 J jnl
Remote. Sens.
Qiaozhen Mu, Aisheng Wu, Xiaoxiong Xiong, David R. Doelling, Amit Angal, Tiejun Chang, Rajendra Bhatt
2016 J jnl
IEEE Trans. Geosci. Remote. Sens.
Benjamin R. Scarino, David R. Doelling, Patrick Minnis, Arun Gopalan, Thad Chee, Rajendra Bhatt, Constantine Lukashin, Conor O. Haney
2016 conf
Earth Observing Systems
Qiaozhen Mu, Aisheng Wu, Tiejun Chang, Amit Angal, Daniel Link, Xiaoxiong Xiong, David R. Doelling, Rajendra Bhatt
2016 conf
Earth Observing Systems
Conor O. Haney, David R. Doelling, Patrick Minnis, Rajendra Bhatt, Benjamin R. Scarino, Arun Gopalan
2015 J jnl
IEEE Trans. Geosci. Remote. Sens.
David R. Doelling, Konstantin V. Khlopenkov, Arata Okuyama, Conor O. Haney, Arun Gopalan, Benjamin R. Scarino, Michele Nordeen, Rajendra Bhatt, Lance Avey
2015 J jnl
IEEE Trans. Geosci. Remote. Sens.
David R. Doelling, Aisheng Wu, Xiaoxiong Xiong, Benjamin R. Scarino, Rajendra Bhatt, Conor O. Haney, Daniel L. Morstad, Arun Gopalan
2015 conf
Earth Observing Systems
Rajendra Bhatt, David R. Doelling, Benjamin R. Scarino, Arun Gopalan, Conor O. Haney
2014 conf
Earth Observing Systems
Benjamin R. Scarino, David R. Doelling, Patrick Minnis, Arun Gopalan, Conor O. Haney, Rajendra Bhatt
2014 J jnl
IEEE Trans. Geosci. Remote. Sens.
Rajendra Bhatt, David R. Doelling, Daniel L. Morstad, Benjamin R. Scarino, Arun Gopalan
2014 J jnl
Remote. Sens.
Rajendra Bhatt, David R. Doelling, Aisheng Wu, Xiaoxiong Xiong, Benjamin R. Scarino, Conor O. Haney, Arun Gopalan
2013 J jnl
IEEE Trans. Geosci. Remote. Sens.
Aisheng Wu, Xiaoxiong Xiong, David R. Doelling, Daniel L. Morstad, Amit Angal, Rajendra Bhatt
2013 J jnl
IEEE Trans. Geosci. Remote. Sens.
David R. Doelling, Daniel L. Morstad, Benjamin R. Scarino, Rajendra Bhatt, Arun Gopalan
2013 J jnl
IEEE Trans. Geosci. Remote. Sens.
David R. Doelling, Benjamin R. Scarino, Daniel L. Morstad, Arun Gopalan, Rajendra Bhatt, Constantine Lukashin, Patrick Minnis
2012 C conf
IGARSS
Rajendra Bhatt, David R. Doelling, Benjamin R. Scarino, Daniel L. Morstad
2012 J jnl
IEEE Trans. Geosci. Remote. Sens.
Dennis L. Helder, Sadhana Karki, Rajendra Bhatt, Esad Micijevic, David Aaron, Benjamin Jasinski
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