mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import logging
 | 
						|
from enum import Enum
 | 
						|
 | 
						|
from pydantic import Field, ValidationInfo, model_validator
 | 
						|
from typing_extensions import Self
 | 
						|
 | 
						|
from .base import FrigateBaseModel
 | 
						|
 | 
						|
__all__ = ["LoggerConfig", "LogLevel"]
 | 
						|
 | 
						|
 | 
						|
class LogLevel(str, Enum):
 | 
						|
    debug = "debug"
 | 
						|
    info = "info"
 | 
						|
    warning = "warning"
 | 
						|
    error = "error"
 | 
						|
    critical = "critical"
 | 
						|
 | 
						|
 | 
						|
class LoggerConfig(FrigateBaseModel):
 | 
						|
    default: LogLevel = Field(default=LogLevel.info, title="Default logging level.")
 | 
						|
    logs: dict[str, LogLevel] = Field(
 | 
						|
        default_factory=dict, title="Log level for specified processes."
 | 
						|
    )
 | 
						|
 | 
						|
    @model_validator(mode="after")
 | 
						|
    def post_validation(self, info: ValidationInfo) -> Self:
 | 
						|
        if isinstance(info.context, dict) and info.context.get("install", False):
 | 
						|
            logging.getLogger().setLevel(self.default.value.upper())
 | 
						|
 | 
						|
            log_levels = {
 | 
						|
                "httpx": LogLevel.error,
 | 
						|
                "werkzeug": LogLevel.error,
 | 
						|
                "ws4py": LogLevel.error,
 | 
						|
                **self.logs,
 | 
						|
            }
 | 
						|
 | 
						|
            for log, level in log_levels.items():
 | 
						|
                logging.getLogger(log).setLevel(level.value.upper())
 | 
						|
 | 
						|
        return self
 |