77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
import asyncore
|
|
import logging
|
|
import logging.handlers
|
|
import multiprocessing
|
|
import optparse
|
|
import os
|
|
import sys
|
|
|
|
sys.path.insert(0,
|
|
os.path.abspath(os.path.join(os.path.dirname(__file__), '../')))
|
|
|
|
from mopidy import get_version, settings, SettingsError
|
|
from mopidy.process import CoreProcess
|
|
from mopidy.utils import get_class, get_or_create_folder
|
|
|
|
logger = logging.getLogger('mopidy.main')
|
|
|
|
def main():
|
|
options = _parse_options()
|
|
_setup_logging(options.verbosity_level, options.dump)
|
|
logger.info('-- Starting Mopidy --')
|
|
get_or_create_folder('~/.mopidy/')
|
|
core_queue = multiprocessing.Queue()
|
|
get_class(settings.SERVER)(core_queue).start()
|
|
core = CoreProcess(core_queue)
|
|
core.start()
|
|
asyncore.loop()
|
|
|
|
def _parse_options():
|
|
parser = optparse.OptionParser(version='Mopidy %s' % get_version())
|
|
parser.add_option('-q', '--quiet',
|
|
action='store_const', const=0, dest='verbosity_level',
|
|
help='less output (warning level)')
|
|
parser.add_option('-v', '--verbose',
|
|
action='store_const', const=2, dest='verbosity_level',
|
|
help='more output (debug level)')
|
|
parser.add_option('--dump',
|
|
action='store_true', dest='dump',
|
|
help='dump debug log to file')
|
|
return parser.parse_args()[0]
|
|
|
|
def _setup_logging(verbosity_level, dump):
|
|
_setup_console_logging(verbosity_level)
|
|
if dump:
|
|
_setup_dump_logging()
|
|
|
|
def _setup_console_logging(verbosity_level):
|
|
if verbosity_level == 0:
|
|
level = logging.WARNING
|
|
elif verbosity_level == 2:
|
|
level = logging.DEBUG
|
|
else:
|
|
level = logging.INFO
|
|
logging.basicConfig(format=settings.CONSOLE_LOG_FORMAT, level=level)
|
|
|
|
def _setup_dump_logging():
|
|
root = logging.getLogger('')
|
|
root.setLevel(logging.DEBUG)
|
|
formatter = logging.Formatter(settings.DUMP_LOG_FORMAT)
|
|
handler = logging.handlers.RotatingFileHandler(
|
|
settings.DUMP_LOG_FILENAME, maxBytes=102400, backupCount=3)
|
|
handler.setFormatter(formatter)
|
|
root.addHandler(handler)
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
main()
|
|
except KeyboardInterrupt:
|
|
logger.info(u'Interrupted by user')
|
|
sys.exit(0)
|
|
except SettingsError, e:
|
|
logger.error(e)
|
|
sys.exit(1)
|
|
except SystemExit, e:
|
|
logger.error(e)
|
|
sys.exit(1)
|