J. M. Landsberg

47 papers Journal 47
YearRankTypeTitle / Venue / Authors
2023 J jnl
Found. Comput. Math.
Austin Conner, Hang Huang, J. M. Landsberg
2023 J jnl
CoRR
Hang Huang, J. M. Landsberg
2022 J jnl
CoRR
Joachim Jelisiejew, J. M. Landsberg, Arpan Pal
2021 J jnl
CoRR
J. M. Landsberg
2020 J jnl
CoRR
Austin Conner, Hang Huang, J. M. Landsberg
2020 J jnl
CoRR
Runshi Geng, J. M. Landsberg
2019 J jnl
CoRR
Austin Conner, Alicia Harper, J. M. Landsberg
2019 J jnl
Exp. Math.
Luca Chiantini, Christian Ikenmeyer, J. M. Landsberg, Giorgio Ottaviani
2019 J jnl
CoRR
J. M. Landsberg, Mateusz Michalek
2018 J jnl
CoRR
Grey Ballard, Christian Ikenmeyer, J. M. Landsberg, Nick Ryder
2018 J jnl
Math. Comput.
Klim Efremenko, J. M. Landsberg, Hal Schenck, Jerzy Weyman
2017 J jnl
CoRR
Fulvio Gesmundo, J. M. Landsberg
2017 J jnl
Exp. Math.
J. M. Landsberg, Nicholas Ryder
2017 J jnl
SIAM J. Appl. Algebra Geom.
J. M. Landsberg, Mateusz Michalek
2016 J jnl
CoRR
J. M. Landsberg, Mateusz Michalek
2016 J jnl
Found. Comput. Math.
Fulvio Gesmundo, Jonathan D. Hauenstein, Christian Ikenmeyer, J. M. Landsberg
2016 J jnl
CoRR
Christian Ikenmeyer, J. M. Landsberg
2016 J jnl
CoRR
J. M. Landsberg, Mateusz Michalek
2016 J jnl
CoRR
Luca Chiantini, Christian Ikenmeyer, J. M. Landsberg, Giorgio Ottaviani
2016 J jnl
CoRR
Klim Efremenko, J. M. Landsberg, Hal Schenck, Jerzy Weyman
2015 J jnl
CoRR
J. M. Landsberg, Mateusz Michalek
2015 J jnl
CoRR
J. M. Landsberg
2015 J jnl
Discret. Math.
Shrawan Kumar, J. M. Landsberg
2015 J jnl
CoRR
Klim Efremenko, J. M. Landsberg, Hal Schenck, Jerzy Weyman
2015 J jnl
CoRR
J. M. Landsberg, Nicholas Ryder
2014 J jnl
CoRR
Shrawan Kumar, J. M. Landsberg
2014 J jnl
SIAM J. Comput.
J. M. Landsberg
2013 J jnl
CoRR
Fulvio Gesmundo, Jonathan D. Hauenstein, Christian Ikenmeyer, J. M. Landsberg
2013 J jnl
CoRR
Jonathan D. Hauenstein, Christian Ikenmeyer, J. M. Landsberg
2013 J jnl
J. Lond. Math. Soc.
Jaroslaw Buczynski, Adam Ginensky, J. M. Landsberg
2013 J jnl
Exp. Math.
Jonathan D. Hauenstein, Christian Ikenmeyer, J. M. Landsberg
2013 J jnl
CoRR
J. M. Landsberg
2012 J jnl
CoRR
J. M. Landsberg
2012 J jnl
CoRR
J. M. Landsberg
2012 J jnl
CoRR
Harlan Kadish, J. M. Landsberg
2011 J jnl
SIAM J. Comput.
Peter Bürgisser, J. M. Landsberg, Laurent Manivel, Jerzy Weyman
2011 J jnl
CoRR
J. M. Landsberg, Giorgio Ottaviani
2010 J jnl
CoRR
J. M. Landsberg, Laurent Manivel, Nicolas Ressayre
2010 J jnl
Found. Comput. Math.
J. M. Landsberg, Zach Teitler
2010 J jnl
J. Symb. Comput.
J. M. Landsberg
2009 J jnl
CoRR
Peter Bürgisser, J. M. Landsberg, Laurent Manivel, Jerzy Weyman
2009 J jnl
CoRR
J. M. Landsberg, Jason Morton, Serguei Norine
2009 J jnl
CoRR
J. M. Landsberg
2007 J jnl
CoRR
J. M. Landsberg
2004 J jnl
IEEE Trans. Inf. Theory
Majid Fozunbal, Steven W. McLaughlin, Ronald W. Schafer, J. M. Landsberg
2004 J jnl
Found. Comput. Math.
J. M. Landsberg, Laurent Manivel
2004 J jnl
Exp. Math.
J. M. Landsberg, Laurent Manivel, Bruce W. Westbury
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