Valeri G. Labunets

27 papers Misc 7Journal 1Unranked 17
YearRankTypeTitle / Venue / Authors
2017 Misc ed.
AIST
Dmitry I. Ignatov, Mikhail Yu. Khachay, Valeri G. Labunets, Natalia V. Loukachevitch, Sergey I. Nikolenko, Alexander Panchenko, Andrey V. Savchenko, Konstantin V. Vorontsov
2016 conf
AIST (Supplement)
Valeri G. Labunets, Denis Komarov, Ekaterina Ostheimer
2016 ed.
AIST (Supplement)
Dmitry I. Ignatov, Mikhail Yu. Khachay, Valeri G. Labunets, Natalia V. Loukachevitch, Sergey I. Nikolenko, Alexander Panchenko, Andrey V. Savchenko, Konstantin V. Vorontsov
2016 conf
AIST (Supplement)
Valeri G. Labunets, Ivan Artemov, Ekaterina Ostheimer
2015 Misc ed.
AIST
Mikhail Yu. Khachay, Natalia Konstantinova, Alexander Panchenko, Dmitry I. Ignatov, Valeri G. Labunets
2015 Misc conf
AIST
Ekaterina Ostheimer, Valeri G. Labunets, Denis Komarov, Tat'yana Fedorova
2015 Misc conf
AIST
Ekaterina Ostheimer, Valeri G. Labunets, Andrey Kurganski, Denis Komarov, Ivan Artemov
2015 ed.
AIST (Supplement)
Mikhail Yu. Khachay, Natalia Konstantinova, Alexander Panchenko, Radhakrishnan Delhibabu, Nikita Spirin, Valeri G. Labunets
2002 J jnl
IEEE Trans. Signal Process.
Ekaterina Rundblad, Valeri G. Labunets, Jaakko Astola, Karen O. Egiazarian
2000 conf
AFPAC
Ekaterina Rundblad, Valeri G. Labunets, Jaakko Astola, Karen O. Egiazarian
2000 conf
AFPAC
Valeri G. Labunets, Ekaterina Rundblad, Jaakko Astola
2000 conf
EUSIPCO
Ekaterina Rundblad-Labunets, Valeri G. Labunets
2000 Misc conf
ICASSP
Valeri G. Labunets, Ekaterina Rundblad-Labunets, Jaakko Astola, Karen O. Egiazarian
2000 conf
EUSIPCO
Ekaterina Rundblad-Labunets, Valeri G. Labunets
2000 conf
Electronic Imaging: Nonlinear Image Processing
Ekaterina V. Labunets-Rundblad, Laura Astola, Valeri G. Labunets, Jaakko T. Astola, Karen O. Egiazarian
2000 conf
Electronic Imaging: Nonlinear Image Processing
Ekaterina V. Labunets-Rundblad, Laura Astola, Valeri G. Labunets, Jaakko T. Astola, Karen O. Egiazarian
1999 conf
NSIP
Ekaterina Rundblad, Valeri G. Labunets, Karen O. Egiazarian, Jaakko Astola
1999 Misc conf
ICIAP
Ekaterina V. Labunets, Valeri G. Labunets, Karen O. Egiazarian, Jaakko Astola
1999 conf
NSIP
Reiner Creutzburg, Ekaterina Rundblad, Valeri G. Labunets
1999 conf
NSIP
Ekaterina Rundblad, Valeri G. Labunets
1999 Misc conf
ICASSP
Ekaterina V. Labunets, Valeri G. Labunets, Karen O. Egiazarian, Jaakko Astola
1998 conf
EUSIPCO
Ekaterina V. Labunets, Valeri G. Labunets
1998 conf
ICIP (2)
Valeri G. Labunets, Ekaterina V. Labunets, Karen O. Egiazarian, Jaakko Astola
1998 conf
EUSIPCO
Karen O. Egiazarian, Valeri G. Labunets, Ekaterina V. Labunets, Jaakko Astola
1996 conf
ICIP (3)
Ekaterina V. Labunets, Valeri G. Labunets, M. Assonov, Reiner Lenz
1993 conf
EUROCAST
Reiner Creutzburg, Valeri G. Labunets, Ekaterina V. Labunets
1991 conf
EUROCAST
Reiner Creutzburg, Valeri G. Labunets, Ekaterina V. Labunets
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