blob: 1f33cda5d672777d3c96e5c6d9e728c1135a6648 [file] [log] [blame]
#!/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)