Van-Duc Vu

12 papers Journal 12
YearRankTypeTitle / Venue / Authors
2025 J jnl
Eng. Appl. Artif. Intell.
Dinh-Cuong Hoang, Anh-Nhat Nguyen, Thu-Uyen Nguyen, Ngoc-Anh Hoang, Van-Duc Vu, Duy-Quang Vu, Phuc-Quan Ngo, Khanh-Toan Phan, Duc-Thanh Tran, Van-Thiep Nguyen, Quang-Tri Duong, Ngoc-Trung Ho, Cong-Trinh Tran, Van-Hiep Duong, Anh-Truong Mai
2025 J jnl
IEEE Trans. Cogn. Dev. Syst.
Dinh-Cuong Hoang, Phan Xuan Tan, Ta Huu Anh Duong, Tuan-Minh Huynh, Duc-Manh Nguyen, Anh-Nhat Nguyen, Duc-Long Pham, Van-Duc Vu, Thu-Uyen Nguyen, Ngoc-Anh Hoang, Khanh-Toan Phan, Duc-Thanh Tran, Van-Thiep Nguyen, Ngoc-Trung Ho, Cong-Trinh Tran, Van-Hiep Duong
2025 J jnl
PeerJ Comput. Sci.
Van-Duc Vu, Van-Thiep Nguyen, Hai-Nam Pham, Dinh-Cuong Hoang, Phan Xuan Tan
2024 J jnl
IEEE Access
Dinh-Cuong Hoang, Phan Xuan Tan, Thu-Uyen Nguyen, Hai-Nam Pham, Chi-Minh Nguyen, Son-Anh Bui, Quang-Tri Duong, Van-Duc Vu, Van-Thiep Nguyen, Van-Hiep Duong, Ngoc-Anh Hoang, Khanh-Toan Phan, Duc-Thanh Tran, Ngoc-Trung Ho, Cong-Trinh Tran
2024 J jnl
IEEE Access
Phan Xuan Tan, Dinh-Cuong Hoang, Anh-Nhat Nguyen, Van-Thiep Nguyen, Van-Duc Vu, Thu-Uyen Nguyen, Ngoc-Anh Hoang, Khanh-Toan Phan, Duc-Thanh Tran, Duy-Quang Vu, Phuc-Quan Ngo, Quang-Tri Duong, Ngoc-Trung Ho, Cong-Trinh Tran, Van-Hiep Duong, Anh-Truong Mai
2024 J jnl
IEEE Trans. Artif. Intell.
Dinh-Cuong Hoang, Anh-Nhat Nguyen, Chi-Minh Nguyen, An-Binh Phi, Quang-Tri Duong, Khanh-Duong Tran, Viet-Anh Trinh, Van-Duc Tran, Hai-Nam Pham, Phuc-Quan Ngo, Duy-Quang Vu, Thu-Uyen Nguyen, Van-Duc Vu, Duc-Thanh Tran, Van-Thiep Nguyen
2024 J jnl
IEEE Access
Dinh-Cuong Hoang, Phan Xuan Tan, Duc-Long Pham, Hai-Nam Pham, Son-Anh Bui, Chi-Minh Nguyen, An-Binh Phi, Khanh-Duong Tran, Viet-Anh Trinh, Van-Duc Tran, Duc-Thanh Tran, Van-Hiep Duong, Khanh-Toan Phan, Van-Thiep Nguyen, Van-Duc Vu, Thu-Uyen Nguyen
2024 J jnl
IEEE Robotics Autom. Lett.
Dinh-Cuong Hoang, Anh-Nhat Nguyen, Van-Duc Vu, Thu-Uyen Nguyen, Duy-Quang Vu, Phuc-Quan Ngo, Ngoc-Anh Hoang, Khanh-Toan Phan, Duc-Thanh Tran, Van-Thiep Nguyen, Quang-Tri Duong, Ngoc-Trung Ho, Cong-Trinh Tran, Van-Hiep Duong, Anh-Truong Mai
2024 J jnl
IEEE Access
Dinh-Cuong Hoang, Phan Xuan Tan, Anh-Nhat Nguyen, Duy-Quang Vu, Van-Duc Vu, Thu-Uyen Nguyen, Ngoc-Anh Hoang, Khanh-Toan Phan, Duc-Thanh Tran, Van-Thiep Nguyen, Quang-Tri Duong, Ngoc-Trung Ho, Cong-Trinh Tran, Van-Hiep Duong, Phuc-Quan Ngo
2024 J jnl
IEEE Access
Dinh-Cuong Hoang, Phan Xuan Tan, Anh-Nhat Nguyen, Duy-Quang Vu, Van-Duc Vu, Thu-Uyen Nguyen, Quang-Tri Duong, Van-Thiep Nguyen, Ngoc-Anh Hoang, Khanh-Toan Phan, Duc-Thanh Tran, Ngoc-Trung Ho, Cong-Trinh Tran, Van-Hiep Duong, Phuc-Quan Ngo
2024 J jnl
IEEE Access
Van-Duc Vu, Dinh-Dai Hoang, Phan Xuan Tan, Van-Thiep Nguyen, Thu-Uyen Nguyen, Ngoc-Anh Hoang, Khanh-Toan Phan, Duc-Thanh Tran, Duy-Quang Vu, Phuc-Quan Ngo, Quang-Tri Duong, Anh-Nhat Nguyen, Dinh-Cuong Hoang
2023 J jnl
J. Intell. Robotic Syst.
Dinh-Cuong Hoang, Anh-Nhat Nguyen, Van-Duc Vu, Duy-Quang Vu, Van-Thiep Nguyen, Thu-Uyen Nguyen, Cong-Trinh Tran, Khanh-Toan Phan, Ngoc-Trung Ho
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