Procházet zdrojové kódy

chore: improve validation and handler of logging timezone with TimezoneName (#9595)

tags/0.11.0
Bowen Liang před 1 rokem
rodič
revize
bab5c54219
Žádný účet není propojen s e-mailovou adresou tvůrce revize
2 změnil soubory, kde provedl 10 přidání a 12 odebrání
  1. 4
    2
      api/configs/feature/__init__.py
  2. 6
    10
      api/extensions/ext_logging.py

+ 4
- 2
api/configs/feature/__init__.py Zobrazit soubor

@@ -10,6 +10,7 @@ from pydantic import (
PositiveInt,
computed_field,
)
from pydantic_extra_types.timezone_name import TimeZoneName
from pydantic_settings import BaseSettings

from configs.feature.hosted_service import HostedServiceConfig
@@ -339,8 +340,9 @@ class LoggingConfig(BaseSettings):
default=None,
)

LOG_TZ: Optional[str] = Field(
description="Timezone for log timestamps (e.g., 'America/New_York')",
LOG_TZ: Optional[TimeZoneName] = Field(
description="Timezone for log timestamps. Allowed timezone values can be referred to IANA Time Zone Database,"
" e.g., 'America/New_York')",
default=None,
)


+ 6
- 10
api/extensions/ext_logging.py Zobrazit soubor

@@ -1,8 +1,10 @@
import logging
import os
import sys
from datetime import datetime
from logging.handlers import RotatingFileHandler

import pytz
from flask import Flask

from configs import dify_config
@@ -30,16 +32,10 @@ def init_app(app: Flask):
handlers=log_handlers,
force=True,
)

log_tz = dify_config.LOG_TZ
if log_tz:
from datetime import datetime

import pytz

timezone = pytz.timezone(log_tz)

def time_converter(seconds):
return datetime.utcfromtimestamp(seconds).astimezone(timezone).timetuple()

for handler in logging.root.handlers:
handler.formatter.converter = time_converter
handler.formatter.converter = lambda seconds: (
datetime.fromtimestamp(seconds, tz=pytz.UTC).astimezone(log_tz).timetuple()
)

Načítá se…
Zrušit
Uložit