File size: 1,055 Bytes
2fe2727
ffa0093
 
 
 
 
2fe2727
 
ffa0093
 
2fe2727
ffa0093
 
2fe2727
ffa0093
 
2fe2727
ffa0093
2fe2727
ffa0093
2fe2727
ffa0093
 
2fe2727
ffa0093
2fe2727
 
 
 
 
 
 
 
 
 
 
 
ffa0093
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""Logger setup for DocVault."""

import logging
import logging.handlers
import os

from server.config import LOG_DIR, LOG_FORMAT, LOG_LEVEL


def setup_logger(name: str) -> logging.Logger:
    """Build a logger with console output and best-effort file logging."""
    logger = logging.getLogger(name)
    logger.setLevel(getattr(logging, LOG_LEVEL))

    if logger.hasHandlers():
        return logger

    formatter = logging.Formatter(LOG_FORMAT)

    console_handler = logging.StreamHandler()
    console_handler.setLevel(getattr(logging, LOG_LEVEL))
    console_handler.setFormatter(formatter)
    logger.addHandler(console_handler)

    log_file = os.path.join(LOG_DIR, f"{name}.log")
    try:
        file_handler = logging.handlers.RotatingFileHandler(
            log_file,
            maxBytes=10 * 1024 * 1024,
            backupCount=5,
        )
        file_handler.setLevel(getattr(logging, LOG_LEVEL))
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)
    except OSError:
        pass

    return logger