Cem Okulmus

28 papers A* 4B 1C 1Journal 13Unranked 9
YearRankTypeTitle / Venue / Authors
2026 C conf
DOLAP
Daniela Böhm, Georg Gottlob, Matthias Lanzinger, Davide Mario Longo, Cem Okulmus, Reinhard Pichler, Alexander Selzer
2025 A* conf
WWW
Shqiponja Ahmetaj, Iovka Boneva, Jan Hidders, Katja Hose, Maxime Jakubowski, José Emilio Labra Gayo, Wim Martens, Fabio Mogavero, Filip Murlak, Cem Okulmus, Axel Polleres, Ognjen Savkovic, Mantas Simkus, Dominik Tomaszuk
2025 J jnl
CoRR
Shqiponja Ahmetaj, Iovka Boneva, Jan Hidders, Katja Hose, Maxime Jakubowski, José Emilio Labra Gayo, Wim Martens, Fabio Mogavero, Filip Murlak, Cem Okulmus, Axel Polleres, Ognjen Savkovic, Mantas Simkus, Dominik Tomaszuk
2025 conf
DL
Bianca Löhnert, Nikolaus Augsten, Cem Okulmus, Magdalena Ortiz
2025 J jnl
CoRR
Daniela Böhm, Georg Gottlob, Matthias Lanzinger, Davide M. Longo, Cem Okulmus, Reinhard Pichler, Alexander Selzer
2025 J jnl
Proc. ACM Manag. Data
Matthias Lanzinger, Cem Okulmus, Reinhard Pichler, Alexander Selzer, Georg Gottlob
2025 conf
ESWC (1)
Bianca Löhnert, Nikolaus Augsten, Cem Okulmus, Magdalena Ortiz
2024 conf
BPM (Forum)
Timotheus Kampik, Cem Okulmus
2024 J jnl
ACM Trans. Database Syst.
Georg Gottlob, Matthias Lanzinger, Cem Okulmus, Reinhard Pichler
2024 conf
ICPM Workshops
Jakob Brand, Timotheus Kampik, Cem Okulmus, Matthias Weidlich
2024 A* conf
KR
Cem Okulmus, Mantas Simkus
2024 J jnl
CoRR
Matthias Lanzinger, Cem Okulmus, Reinhard Pichler, Alexander Selzer, Georg Gottlob
2024 conf
Description Logics
Bianca Löhnert, Nikolaus Augsten, Cem Okulmus, Magdalena Ortiz
2024 J jnl
CoRR
Bianca Löhnert, Nikolaus Augsten, Cem Okulmus, Magdalena Ortiz
2023 J jnl
CoRR
Timotheus Kampik, Cem Okulmus
2023 conf
AMW
Diego Calvanese, Cem Okulmus, Magdalena Ortiz, Mantas Simkus
2023 conf
AMW
Georg Gottlob, Matthias Lanzinger, Davide Mario Longo, Cem Okulmus, Reinhard Pichler, Alexander Selzer
2023 conf
Description Logics
Nikola Dragovic, Cem Okulmus, Magdalena Ortiz
2023 J jnl
CoRR
Georg Gottlob, Matthias Lanzinger, Davide Mario Longo, Cem Okulmus, Reinhard Pichler, Alexander Selzer
2022 A* conf
PODS
Georg Gottlob, Matthias Lanzinger, Cem Okulmus, Reinhard Pichler
2022 J jnl
Constraints An Int. J.
Georg Gottlob, Cem Okulmus, Reinhard Pichler
2022 J jnl
CoRR
Georg Gottlob, Matthias Lanzinger, Davide Mario Longo, Cem Okulmus
2022 J jnl
ACM J. Exp. Algorithmics
Georg Gottlob, Matthias Lanzinger, Davide Mario Longo, Cem Okulmus
2021 J jnl
CoRR
Georg Gottlob, Matthias Lanzinger, Cem Okulmus, Reinhard Pichler
2020 A* conf
IJCAI
Georg Gottlob, Cem Okulmus, Reinhard Pichler
2020 B conf
CPAIOR
Georg Gottlob, Matthias Lanzinger, Davide Mario Longo, Cem Okulmus, Reinhard Pichler
2020 J jnl
CoRR
Georg Gottlob, Matthias Lanzinger, Davide Mario Longo, Cem Okulmus, Reinhard Pichler
2019 conf
AMW
Georg Gottlob, Cem Okulmus, Reinhard Pichler
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