فهرست منبع

fix: 控制日志可以不输出到Console

SongZihuan 3 سال پیش
والد
کامیت
bbe325ba8a
4فایلهای تغییر یافته به همراه12 افزوده شده و 3 حذف شده
  1. 1 1
      aliyun/__init__.py
  2. 2 0
      configure/__init__.py
  3. 1 1
      sql/base.py
  4. 8 1
      view/base.py

+ 1 - 1
aliyun/__init__.py

@@ -11,7 +11,7 @@ class Aliyun:
         self.secret = secret
         self.auth = oss2.Auth(key, secret)
         self.bucket = oss2.Bucket(self.auth, endpoint, name)
-        self.logger = logging.getLogger("aliyun")
+        self.logger = logging.getLogger("main.aliyun")
         self.logger.setLevel(conf["log-level"])
         if conf["log-home"] is not None:
             handle = logging.handlers.TimedRotatingFileHandler(

+ 2 - 0
configure/__init__.py

@@ -70,6 +70,7 @@ def configure(conf_file: str, encoding="utf-8"):
                               "%(process)d %(thread)d "
                               "%(message)s")
         conf["log-level"] = logging.INFO
+        conf["log-stderr"] = False
     else:
         conf["log-home"] = log.get("home")
         if conf["log-home"]:
@@ -82,3 +83,4 @@ def configure(conf_file: str, encoding="utf-8"):
                                                 "(%(filename)s:%(lineno)d %(funcName)s) "
                                                 "%(process)d %(thread)d "
                                                 "%(message)s"))
+        conf["log-stderr"] = log.get("stderr", False)

+ 1 - 1
sql/base.py

@@ -33,7 +33,7 @@ class Database(metaclass=abc.ABCMeta):
             self._port = 3306
         else:
             self._port = int(port)
-        self.logger = logging.getLogger("mysql")
+        self.logger = logging.getLogger("main.database")
         self.logger.setLevel(conf["log-level"])
         if conf["log-home"] is not None:
             handle = logging.handlers.TimedRotatingFileHandler(

+ 8 - 1
view/base.py

@@ -1,11 +1,12 @@
 import os.path
+import sys
 
 from flask import Flask, url_for, request, current_app
 from flask_mail import Mail
 from flask_login import LoginManager, current_user
+from flask.logging import default_handler
 from typing import Optional
 
-import sys
 import logging.handlers
 import logging
 from configure import conf
@@ -30,12 +31,18 @@ class App:
 
         self.mail = Mail(self._app)
 
+        self._app.logger.removeHandler(default_handler)
         self._app.logger.setLevel(conf["log-level"])
+        self._app.logger.propagate = False
         if conf["log-home"] is not None:
             handle = logging.handlers.TimedRotatingFileHandler(
                 os.path.join(conf["log-home"], f"flask-{os.getpid()}.log"))
             handle.setFormatter(logging.Formatter(conf["log-format"]))
             self._app.logger.addHandler(handle)
+        if conf["log-stderr"]:
+            handle = logging.StreamHandler(sys.stderr)
+            handle.setFormatter(logging.Formatter(conf["log-format"]))
+            self._app.logger.addHandler(handle)
 
     def get_app(self) -> Flask:
         return self._app