J. David Ballester-Berman

39 papers C 12Journal 22Unranked 5
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Wenxin Xue, Qinghua Xie, Xing Peng, J. David Ballester-Berman, JinFei Wang, Jiali Shang, Haiqiang Fu, Jianjun Zhu
2024 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Xabier Lekunberri, J. David Ballester-Berman, Ignacio Arganda-Carreras, Jose A. Fernandes-Salvador
2021 J jnl
Remote. Sens.
Qinghua Xie, JinFei Wang, Juan M. Lopez-Sanchez, Xing Peng, Chunhua Liao, Jiali Shang, Jianjun Zhu, Haiqiang Fu, J. David Ballester-Berman
2021 J jnl
Remote. Sens.
J. David Ballester-Berman, Maria Rastoll-Gimenez
2020 J jnl
IEEE Trans. Geosci. Remote. Sens.
Noelia Romero-Puig, Juan M. Lopez-Sanchez, J. David Ballester-Berman
2018 C conf
IGARSS
Noelia Romero-Puig, Juan M. Lopez-Sanchez, J. David Ballester-Berman
2018 J jnl
IEEE Geosci. Remote. Sens. Lett.
Alejandro Mestre-Quereda, Juan M. Lopez-Sanchez, J. David Ballester-Berman, Pablo J. González, Andrew Hooper, Tim J. Wright
2017 J jnl
Remote. Sens.
Qinghua Xie, Jianjun Zhu, Changcheng Wang, Haiqiang Fu, Juan M. Lopez-Sanchez, J. David Ballester-Berman
2017 J jnl
Remote. Sens.
Qinghua Xie, J. David Ballester-Berman, Juan M. Lopez-Sanchez, Jianjun Zhu, Changcheng Wang
2016 J jnl
Remote. Sens.
Qinghua Xie, J. David Ballester-Berman, Juan M. Lopez-Sanchez, Jianjun Zhu, Changcheng Wang
2015 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
J. David Ballester-Berman, Fernando Vicente-Guijalba, Juan M. Lopez-Sanchez
2015 J jnl
IEEE Geosci. Remote. Sens. Lett.
Juan M. Lopez-Sanchez, Fernando Vicente-Guijalba, J. David Ballester-Berman, Shane R. Cloude
2015 C conf
IGARSS
Irena Hajnsek, Yves-Louis Desnos, J. David Ballester-Berman, Shane Cloude, Thomas Jagdhuber, Elise Colin Koeniguer, Carlos López-Martínez, Juan M. Lopez-Sanchez, Armando Marino, Maurizio Migliaccio, Andrea Minchella, Ferdinando Nunziata, Kostas Papathanassiou, Matteo Pardini, Giuseppe Parrella, Eric Pottier, Nicolas Trouvé
2015 C conf
IGARSS
Juan M. Lopez-Sanchez, Fernando Vicente-Guijalba, J. David Ballester-Berman, Shane R. Cloude
2014 J jnl
IEEE Trans. Geosci. Remote. Sens.
Juan M. Lopez-Sanchez, Fernando Vicente-Guijalba, J. David Ballester-Berman, Shane R. Cloude
2012 C conf
IGARSS
Juan Manuel López-Sánchez, J. David Ballester-Berman, Victor D. Navarro-Sanchez, Fernando Vicente-Guijalba
2012 J jnl
IEEE Geosci. Remote. Sens. Lett.
Juan M. Lopez-Sanchez, Irena Hajnsek, J. David Ballester-Berman
2012 C conf
IGARSS
J. David Ballester-Berman, Juan M. Lopez-Sanchez, Idoia Garmendia-Lopez, Victor J. Mangas-Martin
2012 J jnl
IEEE Trans. Geosci. Remote. Sens.
Juan M. Lopez-Sanchez, Shane R. Cloude, J. David Ballester-Berman
2012 J jnl
IEEE Geosci. Remote. Sens. Lett.
J. David Ballester-Berman, Juan M. Lopez-Sanchez
2011 J jnl
IEEE Geosci. Remote. Sens. Lett.
J. David Ballester-Berman, Juan M. Lopez-Sanchez
2011 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Juan M. Lopez-Sanchez, J. David Ballester-Berman, Irena Hajnsek
2011 C conf
IGARSS
Juan M. Lopez-Sanchez, J. David Ballester-Berman, Shane R. Cloude
2011 C conf
IGARSS
Juan M. Lopez-Sanchez, J. David Ballester-Berman
2010 J jnl
IEEE Trans. Geosci. Remote. Sens.
J. David Ballester-Berman, Juan M. Lopez-Sanchez
2009 conf
IGARSS (4)
Juan J. Martinez-Espla, Tomás Martínez-Marín, Juan M. Lopez-Sanchez, J. David Ballester-Berman
2009 conf
IGARSS (5)
J. David Ballester-Berman, Juan M. Lopez-Sanchez, Maria-Jose Sanjuan
2009 conf
IGARSS (5)
Juan M. Lopez-Sanchez, J. David Ballester-Berman, Irena Hajnsek
2008 conf
IGARSS (4)
Juan J. Martinez-Espla, Tomás Martínez-Marín, J. David Ballester-Berman, Juan M. Lopez-Sanchez
2008 conf
IGARSS (3)
Maria-Jose Sanjuan, Juan M. Lopez-Sanchez, J. David Ballester-Berman
2007 J jnl
IEEE Geosci. Remote. Sens. Lett.
J. David Ballester-Berman, Juan M. Lopez-Sanchez
2007 J jnl
IEEE Trans. Geosci. Remote. Sens.
Juan M. Lopez-Sanchez, J. David Ballester-Berman, Yolanda Marquez-Moreno
2007 C conf
IGARSS
Juan M. Lopez-Sanchez, J. David Ballester-Berman, Yolanda Marquez-Moreno
2006 J jnl
IEEE Trans. Geosci. Remote. Sens.
Juan M. Lopez-Sanchez, J. David Ballester-Berman, Joaquim Fortuny-Guasch
2005 C conf
IGARSS
Juan M. Lopez-Sanchez, Emilio Ungria, J. David Ballester-Berman, Joaquim Fortuny-Guasch
2005 J jnl
IEEE Trans. Geosci. Remote. Sens.
J. David Ballester-Berman, Juan Manuel López-Sánchez, Joaquim Fortuny-Guasch
2004 C conf
IGARSS
Juan M. Lopez-Sanchez, J. David Ballester-Berman, Joaquim Fortuny-Guasch
2004 C conf
IGARSS
J. David Ballester-Berman, Juan Manuel López-Sánchez, Joaquim Fortuny-Guasch
2003 C conf
IGARSS
Joaquim Fortuny-Guasch, Alberto Martinez-Vazquez, Daniele Riccio, Juan M. Lopez-Sanchez, J. David Ballester-Berman
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