Ver Fonte

feat: add log date timezone (#4623)

Co-authored-by: liuzhenghua-jk <liuzhenghua-jk@360shuke.com>
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
Co-authored-by: takatost <takatost@gmail.com>
liuzhenghua há 10 meses atrás
pai
commit
9d5a89eab6
2 ficheiros alterados com 18 adições e 1 exclusões
  1. 13 1
      api/app.py
  2. 5 0
      api/configs/feature/__init__.py

+ 13 - 1
api/app.py

@@ -110,9 +110,21 @@ def create_app() -> Flask:
         level=app.config.get('LOG_LEVEL'),
         format=app.config.get('LOG_FORMAT'),
         datefmt=app.config.get('LOG_DATEFORMAT'),
-        handlers=log_handlers
+        handlers=log_handlers,
+        force=True
     )
+    log_tz = app.config.get('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
     initialize_extensions(app)
     register_blueprints(app)
     register_commands(app)

+ 5 - 0
api/configs/feature/__init__.py

@@ -165,6 +165,11 @@ class LoggingConfigs(BaseModel):
         default=None,
     )
 
+    LOG_TZ: Optional[str] = Field(
+        description='specify log timezone, eg: America/New_York',
+        default=None,
+    )
+
 
 class ModelLoadBalanceConfigs(BaseModel):
     """