Hajime Sasaki

16 papers Journal 11Unranked 5
YearRankTypeTitle / Venue / Authors
2024 J jnl
Energy Inform.
Kunihiko Okuda, Hajime Sasaki
2024 J jnl
Int. J. Inf. Manag. Data Insights
Hajime Sasaki, Motomasa Fujii, Hiroki Sakaji, Shigeru Masuyama
2022 J jnl
Int. J. Inf. Manag. Data Insights
Motomasa Fujii, Hiroki Sakaji, Shigeru Masuyama, Hajime Sasaki
2018 J jnl
Microelectron. Reliab.
Hajime Sasaki, Takayuki Hisaka, Kaoru Kadoiwa, Tomoki Oku, Shinobu Onoda, Takeshi Ohshima, Eiji Taguchi, Hidehiro Yasuda
2014 conf
IEEM
Ken Hayashima, Haruki Sawamura, Ichiro Sakata, Yoichiro Matsumoto, Hajime Sasaki
2014 J jnl
Microelectron. Reliab.
Hajime Sasaki, Kaoru Kadoiwa, Hidetoshi Koyama, Yoshitaka Kamo, Yoshitsugu Yamamoto, Toshiyuki Oishi, Kazuo Hayashi
2012 J jnl
IEICE Electron. Express
Hajime Sasaki, Takayuki Hisaka, Kaoru Kadoiwa, Yoshikazu Terai, Yasufumi Fujiwara
2011 conf
IEEM
Ichiro Sakata, Hajime Sasaki, Toshihiro Inoue
2010 J jnl
IEICE Electron. Express
Takayuki Hisaka, Hajime Sasaki, Takayuki Kato, Ko Kanaya, Naohito Yoshida, Anita A. Villanueva, Jesús A. del Alamo
2009 J jnl
Microelectron. Reliab.
Takayuki Hisaka, Hajime Sasaki, Yoichi Nogami, Kenji Hosogi, Naohito Yoshida, Anita A. Villanueva, Jesús A. del Alamo, Shigehiko Hasegawa, Hajime Asahi
2009 J jnl
IEEE Micro
Tohru Nojiri, Yuki Kondo, Naohiko Irie, Masayuki Ito, Hajime Sasaki, Hideo Maejima
2005 J jnl
Microelectron. Reliab.
Takayuki Hisaka, Yasuki Aihara, Yoichi Nogami, Hajime Sasaki, Yasushi Uehara, Naohito Yoshida, Kazuo Hayashi
1998 conf
MedInfo
Hajime Sasaki, Hiroko Sukeda, Hitoshi Matsuo, Yuji Oka, Michiko Kaneko, Shizuo Sasaki
1996 conf
IFIP World Conference on IT Tools
Hajime Sasaki
1996 conf
IFIP World Conference on Mobile Communications
Hajime Sasaki
1985 J jnl
Future Gener. Comput. Syst.
Hajime Sasaki
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