Carinna Parraman

39 papers Unranked 39
YearRankTypeTitle / Venue / Authors
2024 conf
EVA
Carinna Parraman, Mike White, Laura Clarke, Tracy Hill, Matt Smith, Alicia Paz
2021 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman, Susanne Klein
2021 conf
CIC
Abigail Trujillo-Vazquez, Donatela Saric, Susanne Klein, Carinna Parraman
2021 conf
EVA
Carinna Parraman, Fabio D'Agnano, Wuon-Gean Ho
2020 conf
LIM
Marine Shao, Carinna Parraman, David Huson
2020 conf
CIC
Abigail Trujillo-Vazquez, Susanne Klein, Xavier Aure Calvet, Carinna Parraman
2019 conf
FARM@ICFP
Benedict R. Gaster, Nathan Renney, Carinna Parraman
2019 conf
EVA
Verity Winslow, Paul J. O'Dowd, Ian Chamberlain, Carinna Parraman
2016 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman, Paul J. O'Dowd, Mikaela Harding
2016 conf
Measuring, Modeling, and Reproducing Material Appearance
Carinna Parraman, Maria V. Ortiz Segovia
2016 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman, Judith Mottram
2016 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Paul J. O'Dowd, Carinna Parraman, Mikaela Harding
2015 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Melissa Olen, Adrian Geisow, Carinna Parraman
2014 conf
Measuring, Modeling, and Reproducing Material Appearance
Flavia Tisato, Carinna Parraman
2014 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Melissa Olen, Joseph Padfield, Carinna Parraman
2014 conf
Measuring, Modeling, and Reproducing Material Appearance
Carinna Parraman
2013 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman
2012 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman
2012 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman
2011 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman, Alessandro Rizzi
2011 conf
DESIRE
Carinna Parraman, Sophie Adams-Foster
2010 conf
CIC
John J. McCann, Vassilios Vonikakis, Carinna Parraman, Alessandro Rizzi
2010 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman, John J. McCann, Alessandro Rizzi
2010 conf
CGIV/MCS
Carinna Parraman
2010 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
John J. McCann, Carinna Parraman, Alessandro Rizzi
2010 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman
2010 conf
Human Vision and Electronic Imaging
Carinna Parraman
2009 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman, Alessandro Rizzi, John J. McCann
2009 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Yu Wang, Carinna Parraman
2009 conf
Color Imaging: Displaying, Processing, Hardcopy, and Applications
Carinna Parraman, Yu Wang
2009 conf
CIC
John J. McCann, Carinna Parraman, Alessandro Rizzi
2008 conf
Color Imaging: Processing, Hardcopy, and Applications
Carinna Parraman
2008 conf
Three-Dimensional Image Capture and Applications
Carinna Parraman, Peter Walters, Brendan Reid, David Huson
2007 conf
Color Imaging: Processing, Hardcopy, and Applications
Carinna Parraman, Alessandro Rizzi
2005 conf
Color Imaging: Processing, Hardcopy, and Applications
Carinna Parraman, Paul Thirkell, Steve Hoskins, Hongqiang Wang, Paul Laidler
2003 conf
CIC
Carinna Parraman
2003 conf
PICS
Carinna Parraman
2003 conf
Color Imaging: Processing, Hardcopy, and Applications
Carinna Parraman, Stephen Hoskins
2001 conf
CIC
Carinna Parraman, Stephen Hoskins
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