| #!/usr/bin/env python |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # 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 sys |
| import os |
| from twisted.application import service, internet |
| |
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) |
| |
| import svnwcsub |
| |
| application = service.Application("SvnWcSub") |
| |
| def get_service(): |
| m = service.MultiService() |
| c = svnwcsub.ReloadableConfig("/etc/svnwcsub.conf") |
| big = svnwcsub.BigDoEverythingClasss(c, service=m) |
| return m |
| |
| service = get_service() |
| service.setServiceParent(application) |
| |
| |
| ### crazy hack. the first time Twisted logs something, we will track down |
| ### the logfile it is using, then use that for the Python logging framework |
| from twisted.python import log |
| import logging |
| |
| def capture_log(unused_msg): |
| for ob in log.theLogPublisher.observers: |
| if hasattr(ob, 'im_class') and ob.im_class is log.FileLogObserver: |
| flo = ob.im_self |
| logfile = flo.write.im_self |
| stream = logfile._file |
| |
| ### the follow is similar to svnwcsub.prepare_logging() |
| handler = logging.StreamHandler(stream) |
| formatter = logging.Formatter( |
| '%(asctime)s [%(levelname)s] %(message)s', |
| '%Y-%m-%d %H:%M:%S') |
| handler.setFormatter(formatter) |
| |
| # Apply the handler to the root logger |
| root = logging.getLogger() |
| root.addHandler(handler) |
| |
| ### use logging.INFO for now |
| root.setLevel(logging.INFO) |
| |
| # okay. remove our capture function. |
| log.removeObserver(capture_log) |
| |
| # hook in the capturing... |
| log.addObserver(capture_log) |