Ian Frank

33 papers A* 1A 1B 2C 6Journal 9Unranked 12
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Shusuke Takayama, Ian Frank
2024 conf
ICEEL
Ian Frank
2013 conf
Culture and Computing
Ian Frank, Yasushi Harada, Alex Grant
2011 conf
SLaTE
Manny Rayner, Ian Frank, Cathy Chua, Nikos Tsourakis, Pierrette Bouillon
2006 conf
Advances in Computer Entertainment Technology
Ian Frank, Nobuhisa Sanbou, Katsuaki Terashima
2004 B conf
IJCNLP
Kumiko Tanaka-Ishii, Ian Frank
2004 conf
CHI Extended Abstracts
Itiro Siio, Noyuri Mima, Ian Frank, Tetsuo Ono, Hillel Weintraub
2003 J jnl
Auton. Agents Multi Agent Syst.
Gal A. Kaminka, Ian Frank, Katsuto Arai, Kumiko Tanaka-Ishii
2002 ed.
Computers and Games
T. Anthony Marsland, Ian Frank
2002 conf
IWEC
Naohiro Matsunami, Kumiko Tanaka-Ishii, Ian Frank, Hitoshi Matsubara
2001 J jnl
Theor. Comput. Sci.
Ian Frank, David A. Basin
2001 B conf
INTERACT
Tak Kamae, H. Jaap van den Herik, Kazuhiko Nishi, Masahiko Tsukamoto, Hitoshi Matsubara, Ian Frank, Hiroyuki Iida
2001 C conf
RoboCup
Ian Frank, Kumiko Tanaka-Ishii, Hitoshi Matsubara, Eiichi Osawa
2000 C conf
RoboCup
Ian Frank, Kumiko Tanaka-Ishii, Hiroshi G. Okuno, Junichi Akita, Yukiko Nakagawa, Kazuaki Maeda, Kazuhiro Nakadai, Hiroaki Kitano
2000 conf
AAAI/IAAI
Ian Frank, David A. Basin, Alan Bundy
2000 A* conf
ACL
Kumiko Tanaka-Ishii, Ian Frank
2000 conf
Computers and Games
Itsuki Noda, Ian Frank
2000 C conf
RoboCup
Ian Frank, Kumiko Tanaka-Ishii, Katsuto Arai, Hitoshi Matsubara
2000 J jnl
AI Mag.
Kumiko Tanaka-Ishii, Ian Frank, Katsuto Arai
1999 C conf
RoboCup
Kumiko Tanaka-Ishii, Ian Frank, Itsuki Noda, Hitoshi Matsubara
1998 C conf
RoboCup
Hitoshi Matsubara, Itsuki Noda, Ian Frank, Hideyuki Nakashima, Kumiko Tanaka-Ishii, Kôiti Hasida
1998 conf
AAAI/IAAI
Ian Frank, David A. Basin, Hitoshi Matsubara
1998 conf
Virtual Worlds
Itsuki Noda, Ian Frank
1998 conf
ICMAS
Kumiko Tanaka-Ishii, Itsuki Noda, Ian Frank, Hideyuki Nakashima, Kôiti Hasida, Hitoshi Matsubara
1998 conf
Computers and Games
Ian Frank, David A. Basin
1998 J jnl
ICCA J.
Ian Frank, Reijer Grimbergen
1998 book
Search and planning under incomplete information - a study using bridge card play.
Ian Frank
1998 J jnl
Artif. Intell.
Ian Frank, David A. Basin
1998 J jnl
ICCA J.
Ian Frank, David A. Basin
1998 J jnl
Appl. Artif. Intell.
Itsuki Noda, Hitoshi Matsubara, Kazuo Hiraki, Ian Frank
1997 C conf
RoboCup
Ian Frank
1997 J jnl
Evol. Comput.
Ian Frank, Bernard Manderick, Tetsuya Higuchi
1992 A conf
ECAI
Ian Frank, David A. Basin, Alan Bundy
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