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