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
 |