~loggerhead-team/loggerhead/trunk-rich

24.1.2 by robey
use python2.4 from the env, not mac-style :)
1
#!/usr/bin/env python2.4
89 by Robey Pointer
fix up dev.cfg so that nobody will ever have to edit it, by letting the
2
1 by Robey Pointer
initial checkin
3
import pkg_resources
4
pkg_resources.require("TurboGears")
5
89 by Robey Pointer
fix up dev.cfg so that nobody will ever have to edit it, by letting the
6
import os
7
1 by Robey Pointer
initial checkin
8
import turbogears
9
import cherrypy
10
cherrypy.lowercase_api = True
11
12
import sys
13
89 by Robey Pointer
fix up dev.cfg so that nobody will ever have to edit it, by letting the
14
home = os.path.realpath(os.path.dirname(__file__))
15
pidfile = os.path.join(home, 'loggerhead.pid')
16
17
# read loggerhead config
18
19
from configobj import ConfigObj
20
config = sys._loggerhead_config = ConfigObj(os.path.join(home, 'loggerhead.conf'), encoding='utf-8')
21
extra_path = config.get('bzrpath', None)
22
if extra_path:
23
    sys.path.insert(0, extra_path)
24
25
turbogears.update_config(configfile="dev.cfg", modulename="loggerhead.config")
26
27
potential_overrides = [ ('server.socket_port', int), ('server.webpath', str), ('server.thread_pool', int) ]
28
for key, keytype in potential_overrides:
29
    value = config.get(key, None)
30
    if value is not None:
31
        value = keytype(value)
32
        turbogears.config.update({ key: value })
33
34
35
sys.stderr.write('\n')
36
sys.stderr.write('Launching loggerhead into the background.\n')
37
sys.stderr.write('PID file: %s\n' % (pidfile,))
38
sys.stderr.write('\n')
39
40
from loggerhead.daemon import daemonize
41
daemonize(pidfile, home)
42
43
# i hate that stupid logging config format, so just set up logging here.
44
import logging
45
46
log_folder = os.path.join(home, 'logs')
47
if not os.path.exists(log_folder):
48
    os.mkdir(log_folder)
49
50
f = logging.Formatter('%(levelname)-.3s [%(asctime)s.%(msecs)03d] %(name)s: %(message)s',
51
                      '%Y%m%d-%H:%M:%S')
52
debug_log = logging.FileHandler(os.path.join(log_folder, 'debug.log'))
53
debug_log.setLevel(logging.DEBUG)
54
debug_log.setFormatter(f)
55
f = logging.Formatter('[%(asctime)s.%(msecs)03d] %(message)s',
56
                      '%Y%m%d-%H:%M:%S')
57
access_log = logging.FileHandler(os.path.join(log_folder, 'access.log'))
58
access_log.setLevel(logging.INFO)
59
access_log.setFormatter(f)
60
61
logging.getLogger('').addHandler(debug_log)
62
logging.getLogger('turbogears.access').addHandler(access_log)
63
logging.getLogger('turbogears.controllers').setLevel(logging.INFO)
64
65
log = logging.getLogger('loggerhead')
66
log.info('Starting up...')
1 by Robey Pointer
initial checkin
67
68
from loggerhead.controllers import Root
69
89 by Robey Pointer
fix up dev.cfg so that nobody will ever have to edit it, by letting the
70
# re-index every 6 hours
71
index_freq = 6 * 3600
72
turbogears.scheduler.add_interval_task(initialdelay=1, interval=index_freq, action=Root._check_rebuild)
73
74
try:
75
    turbogears.start_server(Root)
76
finally:
77
    log.info('Shutdown.')
78
    os.remove(pidfile)
79