From: Michal Fojtik <mfoj...@redhat.com>
Signed-off-by: Michal fojtik <mfoj...@redhat.com> --- server/bin/deltacloudd | 24 ++++++++++++++---------- server/config.ru | 6 ++++++ server/lib/deltacloud/server.rb | 12 +++++++----- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/server/bin/deltacloudd b/server/bin/deltacloudd index e8fca6e..289ed9a 100755 --- a/server/bin/deltacloudd +++ b/server/bin/deltacloudd @@ -46,14 +46,14 @@ deltacloudd -i <driver> [options] Options: BANNER - opts.on( '-i', '--driver DRIVER', 'Driver to use') do |driver| + opts.on( '-i', '--driver [DRIVER]', 'Driver to use') do |driver| ENV["API_DRIVER"] = driver end - opts.on( '-r', '--hostname HOSTNAME', + opts.on( '-r', '--hostname [HOSTNAME]', 'Bind to HOST address (default: localhost)') do |host| ENV["API_HOST"] = host end - opts.on( '-p', '--port PORT', 'Use PORT (default: 3001)') do |port| + opts.on( '-p', '--port [PORT]', 'Use PORT (default: 3001)') do |port| ENV["API_PORT"] = port end opts.on( '-P', '--provider PROVIDER', 'Use PROVIDER (default is set in the driver)') do |provider| @@ -65,17 +65,20 @@ BANNER opts.on( '-c', '--config [FILE]', 'Read provider and other config from FILE (default: ~/.deltacloud/config)') do |config| options[:config] = File::expand_path(config || DEFAULT_CONFIG) end - opts.on( '-e', '--env ENV', 'Environment (default: "development")') { |env| options[:env] = env } + opts.on( '-e', '--env [ENV]', 'Environment (default: "development")') { |env| options[:env] = env } opts.on( '-d', '--daemon', 'Run daemonized in the background, logging to SYSLOG (default: "disabled")') do options[:daemon] = true end - opts.on( '-u', '--user USER', 'User to run daemon as. Use with -d (default: "nobody")') { |user| options[:user] = user } - opts.on( '', '--pid PID', 'File to store PID (default: tmp/pids/thin.pid)') { |pid| options[:pid] = pid } + opts.on('-L', '--log [FILE]', 'Log everything to given file (default: "syslog or console"') do |f| + options[:log] = f.strip + end + opts.on( '-u', '--user [USER]', 'User to run daemon as. Use with -d (default: "nobody")') { |user| options[:user] = user } + opts.on( '-P', '--pid [PID]', 'File to store PID (default: tmp/pids/thin.pid)') { |pid| options[:pid] = pid } opts.on( '-l', '--drivers', 'List available drivers') { |env| options[:drivers] = true } opts.on( '-s', '--ssl', 'Enable SSL (default: disabled)') { |ssl| options[:ssl] = true } - opts.on( '-k', '--ssl-key KEY', 'SSL key file to use') { |key| options[:ssl_key] = key } - opts.on( '-C', '--ssl-cert CERT', 'SSL certificate file to use') { |cert| options[:ssl_cert] = cert } - opts.on( '-t', '--timeout TIMEOUT', 'Timeout for single request (default: 60)') do |timeout| + opts.on( '-k', '--ssl-key [KEY]', 'SSL key file to use') { |key| options[:ssl_key] = key } + opts.on( '-C', '--ssl-cert [CERT]', 'SSL certificate file to use') { |cert| options[:ssl_cert] = cert } + opts.on( '-t', '--timeout [TIMEOUT]', 'Timeout for single request (default: 60)') do |timeout| ENV["API_TIMEOUT"] = timeout end opts.on( '-V', '--verbose', 'Set verbose logging on') do |verbose| @@ -127,6 +130,7 @@ if options[:drivers] exit(0) end +ENV['DELTACLOUD_LOG'] = options[:log] if options[:log] if options[:ssl] unless options[:ssl_key] @@ -161,7 +165,6 @@ unless options[:daemon] msg << ":: http://#{ENV["API_HOST"]}:#{ENV["API_PORT"]}/#{api_uri}" end puts msg - puts end if ENV['API_USER'] && ENV['API_PASSWORD'] @@ -216,6 +219,7 @@ else options[:env] = "production" argv_opts << [ "--daemonize", "--user", options[:user] || 'nobody', "--tag", "deltacloud-#{ENV['API_DRIVER']}"] argv_opts << [ "--pid", options[:pid]] if options[:pid] + argv_opts << ['--log', ENV['DELTACLOUD_LOG']] if ENV['DELTACLOUD_LOG'] end argv_opts.flatten! diff --git a/server/config.ru b/server/config.ru index e3eb817..9d817ff 100644 --- a/server/config.ru +++ b/server/config.ru @@ -22,6 +22,12 @@ $:.unshift File.join($top_srcdir, 'lib') server_dir = ENV['API_FRONTEND'] == 'cimi' ? 'cimi' : 'deltacloud' +if ENV['DELTACLOUD_LOG'] + log = File.new(ENV['DELTACLOUD_LOG'], "a+") + $stdout.reopen(log) + $stderr.reopen(log) +end + load File.join($top_srcdir, 'lib', server_dir, 'server.rb') run Sinatra::Application diff --git a/server/lib/deltacloud/server.rb b/server/lib/deltacloud/server.rb index 2a5d481..6eb69fa 100644 --- a/server/lib/deltacloud/server.rb +++ b/server/lib/deltacloud/server.rb @@ -56,20 +56,22 @@ configure do end configure :production do - use Rack::SyslogLogger + # Log to syslog by default if in production, except user explicitely set + # a file where to log using -L + unless ENV['DELTACLOUD_LOG'] + use Rack::SyslogLogger + $stdout = SyslogFile.new + $stderr = $stdout + end disable :logging enable :show_errors set :dump_errors, false - $stdout = SyslogFile.new - $stderr = $stdout end configure :development do # So we can just use puts for logging set :raise_errors => false set :show_exceptions, false - $stdout.sync = true - $stderr.sync = true end # You could use $API_HOST environment variable to change your hostname to -- 1.7.4.4