浏览代码

feat: 完成其他部分的日志

SongZihuan 3 年之前
父节点
当前提交
a6ab42e089
共有 6 个文件被更改,包括 42 次插入14 次删除
  1. 18 2
      aliyun/__init__.py
  2. 0 1
      gunicorn.conf.py
  3. 7 3
      send_email/__init__.py
  4. 11 0
      sql/base.py
  5. 6 4
      sql/mysql.py
  6. 0 4
      view/base.py

+ 18 - 2
aliyun/__init__.py

@@ -1,5 +1,8 @@
 from configure import conf
 import oss2
+import logging.handlers
+import logging
+import os
 
 
 class Aliyun:
@@ -8,12 +11,25 @@ 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.setLevel(conf["log-level"])
+        if conf["log-home"] is not None:
+            handle = logging.handlers.TimedRotatingFileHandler(
+                os.path.join(conf["log-home"], f"aliyun-{os.getpid()}-{key}.log"))
+            handle.setFormatter(logging.Formatter(conf["log-format"]))
+            self.logger.addHandler(handle)
 
     def upload_file(self, name, f):
-        self.bucket.put_object(name, f)
+        res = self.bucket.put_object(name, f)
+        self.logger.info(f"Upload {name} "
+                         f"id: {res.request_id} status: {res.status} "
+                         f"etag: {res.etag} resp: {res.resp} "
+                         f"version id: {res.versionid} key: {self.key}")
 
     def shared_obj(self, name, time=15):
-        return self.bucket.sign_url('GET', name, time, slash_safe=True)
+        url = self.bucket.sign_url('GET', name, time, slash_safe=True)
+        self.logger.debug(f"Get url {url} name: {name} time: {time}s key: {self.key}")
+        return url
 
 
 if conf["aliyun"]:

+ 0 - 1
gunicorn.conf.py

@@ -1,6 +1,5 @@
 # gunicorn.conf.py
 import os
-import sys
 import multiprocessing
 import logging.handlers
 import logging

+ 7 - 3
send_email/__init__.py

@@ -1,10 +1,14 @@
-from flask import render_template
+from flask import render_template, current_app
 from flask_mail import Mail, Message
 from configure import conf
+import os
 
 
 def send_msg(title: str, mail: Mail, to, template, **kwargs):
     """ 邮件发送 """
-    message = Message(conf['email_prefix'] + title, sender=f"HBlog Admin <{conf['email_sender']}>", recipients=[to])
-    message.body = render_template("email-msg/" + f"{template}.txt", **kwargs)
+    sender = f"HBlog Admin <{conf['email_sender']}>"
+    template_path = os.path.join("email-msg", f"{template}.txt")
+    message = Message(conf['email_prefix'] + title, sender=sender, recipients=[to])
+    message.body = render_template(template_path, **kwargs)
     mail.send(message)
+    current_app.logger.info(f"Send email to {to} sender: {sender} msg: {template_path} kwargs: {kwargs}")

+ 11 - 0
sql/base.py

@@ -1,5 +1,9 @@
 import abc
 from typing import List, Dict, Tuple, Union, Optional
+import logging.handlers
+import logging
+from configure import conf
+import os
 
 
 class DBException(Exception):
@@ -29,6 +33,13 @@ class Database(metaclass=abc.ABCMeta):
             self._port = 3306
         else:
             self._port = int(port)
+        self.logger = logging.getLogger("mysql")
+        self.logger.setLevel(conf["log-level"])
+        if conf["log-home"] is not None:
+            handle = logging.handlers.TimedRotatingFileHandler(
+                os.path.join(conf["log-home"], f"mysql-{os.getpid()}-{name}@{host}.log"))
+            handle.setFormatter(logging.Formatter(conf["log-format"]))
+            self.logger.addHandler(handle)
 
     @abc.abstractmethod
     def close(self):

+ 6 - 4
sql/mysql.py

@@ -24,6 +24,7 @@ class MysqlDB(Database):
             raise
         self._cursor = self._db.cursor()
         self._lock = threading.RLock()
+        self.logger.info(f"MySQL({self._name}@{self._host}) connect")
 
     def close(self):
         if self._cursor is not None:
@@ -33,6 +34,7 @@ class MysqlDB(Database):
         self._db = None
         self._cursor = None
         self._lock = None
+        self.logger.warning(f"MySQL({self._name}@{self._host}) connect close")
 
     def is_connect(self) -> bool:
         if self._cursor is None or self._db is None:
@@ -125,8 +127,7 @@ class MysqlDB(Database):
             self._lock.acquire()  # 上锁
             self._cursor.execute(sql)
         except pymysql.MySQLError:
-            print(f"sql='{sql}'")
-            traceback.print_exc()
+            self.logger.error(f"MySQL({self._name}@{self._host}) SQL {sql} error", exc_info=True, extra=True)
             return None
         finally:
             self._lock.release()  # 释放锁
@@ -141,8 +142,7 @@ class MysqlDB(Database):
             self._cursor.execute(sql)
         except pymysql.MySQLError:
             self._db.rollback()
-            print(f"sql={sql}")
-            traceback.print_exc()
+            self.logger.error(f"MySQL({self._name}@{self._host}) SQL {sql} error", exc_info=True, extra=True)
             return None
         finally:
             if not not_commit:
@@ -154,5 +154,7 @@ class MysqlDB(Database):
         try:
             self._lock.acquire()
             self._db.commit()
+        except pymysql.MySQLError:
+            self.logger.error(f"MySQL({self._name}@{self._host}) commit error")
         finally:
             self._lock.release()

+ 0 - 4
view/base.py

@@ -36,10 +36,6 @@ class App:
                 os.path.join(conf["log-home"], f"flask-{os.getpid()}.log"))
             handle.setFormatter(logging.Formatter(conf["log-format"]))
             self._app.logger.addHandler(handle)
-        else:
-            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