Repository: incubator-ariatosca
Updated Branches:
  refs/heads/ARIA-106-Create-sqla-logging-handler 51c70c86a -> d868713c4 
(forced update)


wip


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/d868713c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/d868713c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/d868713c

Branch: refs/heads/ARIA-106-Create-sqla-logging-handler
Commit: d868713c4636bcc7e811564f2bcad7b321824fca
Parents: 1498ad3
Author: mxmrlv <mxm...@gmail.com>
Authored: Mon Feb 13 12:28:27 2017 +0200
Committer: mxmrlv <mxm...@gmail.com>
Committed: Mon Feb 13 12:28:27 2017 +0200

----------------------------------------------------------------------
 aria/__init__.py           |  2 ++
 aria/logger.py             | 25 +++++++++++++++++++++++++
 aria/storage/base_model.py | 12 ++++++++++++
 aria/storage/model.py      |  4 ++++
 tests/storage/__init__.py  |  3 +--
 5 files changed, 44 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/d868713c/aria/__init__.py
----------------------------------------------------------------------
diff --git a/aria/__init__.py b/aria/__init__.py
index 8b87473..4e2982f 100644
--- a/aria/__init__.py
+++ b/aria/__init__.py
@@ -77,6 +77,8 @@ def application_model_storage(api, api_kwargs=None, 
initiator=None, initiator_kw
 
         storage.model.Execution,
         storage.model.Task,
+
+        storage.model.Log
     ]
     return storage.ModelStorage(api_cls=api,
                                 api_kwargs=api_kwargs,

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/d868713c/aria/logger.py
----------------------------------------------------------------------
diff --git a/aria/logger.py b/aria/logger.py
index 0002cb5..5840cff 100644
--- a/aria/logger.py
+++ b/aria/logger.py
@@ -18,6 +18,8 @@ Logging related mixins and functions
 """
 
 import logging
+
+from datetime import datetime
 from logging.handlers import RotatingFileHandler
 
 _base_logger = logging.getLogger('aria')
@@ -135,5 +137,28 @@ def create_file_log_handler(
     return rotating_file
 
 
+def create_sqla_log_handler(session, engine, model_cls=None, 
level=logging.DEBUG):
+    from aria.storage.model import Log
+    return SQLAlchemyHandler(session, engine, model_cls or Log, level=level)
+
+
 _default_file_formatter = logging.Formatter(
     '%(asctime)s [%(name)s:%(levelname)s] %(message)s 
<%(pathname)s:%(lineno)d>')
+
+
+class SQLAlchemyHandler(logging.Handler):
+    def __init__(self, session, engine, log_cls, **kwargs):
+        self._session = session
+        self._engine = engine
+        self._cls = log_cls
+        super(SQLAlchemyHandler, self).__init__(**kwargs)
+
+    def emit(self, record):
+        log = self._cls(
+            logger=record.name,
+            level=record.levelname,
+            msg=record.msg,
+            created_at=datetime.utcnow()
+        )
+        self._session.add(log)
+        self._session.commit()

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/d868713c/aria/storage/base_model.py
----------------------------------------------------------------------
diff --git a/aria/storage/base_model.py b/aria/storage/base_model.py
index f7d0e5b..a24b1f9 100644
--- a/aria/storage/base_model.py
+++ b/aria/storage/base_model.py
@@ -755,3 +755,15 @@ class TaskBase(ModelMixin):
     @staticmethod
     def retry(message=None, retry_interval=None):
         raise TaskRetryException(message, retry_interval=retry_interval)
+
+
+class LogBase(ModelMixin):
+    __tablename__ = 'log'
+
+    logger = Column(String)
+    level = Column(String)
+    msg = Column(String)
+    created_at = Column(DateTime, index=True)
+
+    def __repr__(self):
+        return "<Log: {0} - {1}>".format(self.created_at, self.msg[:50])

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/d868713c/aria/storage/model.py
----------------------------------------------------------------------
diff --git a/aria/storage/model.py b/aria/storage/model.py
index afca3e4..23fbb88 100644
--- a/aria/storage/model.py
+++ b/aria/storage/model.py
@@ -108,3 +108,7 @@ class Plugin(DeclarativeBase, base.PluginBase):
 
 class Task(DeclarativeBase, base.TaskBase):
     pass
+
+
+class Log(DeclarativeBase, base.LogBase):
+    pass
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/d868713c/tests/storage/__init__.py
----------------------------------------------------------------------
diff --git a/tests/storage/__init__.py b/tests/storage/__init__.py
index b798e01..2ba6da9 100644
--- a/tests/storage/__init__.py
+++ b/tests/storage/__init__.py
@@ -12,8 +12,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-import os
-import platform
+
 from tempfile import mkdtemp
 from shutil import rmtree
 

Reply via email to