File size: 1,483 Bytes
ed0b977
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
40
41
42
43
44
45
import logging
import json
import os
from datetime import datetime

# --- JSON Logging Setup ---
class JsonFormatter(logging.Formatter):
    def format(self, record):
        log_record = {
            "timestamp": datetime.fromtimestamp(record.created).isoformat(),
            "level": record.levelname,
            "message": record.getMessage()
        }
        # If the message is a dict, merge it into the log record
        if isinstance(record.msg, dict):
            log_record.update(record.msg)
            # Remove the original message field to avoid redundancy if it's just the dict string representation
            if "message" in log_record and log_record["message"] == str(record.msg):
                del log_record["message"]
        
        return json.dumps(log_record)

def setup_logger():
    # Create log directory
    log_dir = os.path.join('logs', 'user_interaction')
    os.makedirs(log_dir, exist_ok=True)
    log_file_path = os.path.join(log_dir, 'events.jsonl')

    log_handler = logging.FileHandler(log_file_path)
    log_handler.setFormatter(JsonFormatter())
    
    logger = logging.getLogger('action_logger')
    logger.addHandler(log_handler)
    logger.setLevel(logging.INFO)
    
    # Prevent adding multiple handlers if setup is called multiple times
    if logger.hasHandlers():
        logger.handlers.clear()
        logger.addHandler(log_handler)
        
    return logger

# Create a singleton logger instance
logger = setup_logger()