def self.build_logger(profile)
begin
log_file = profile[:default_file]
log_level = profile[:default_level]
begin
config = OpenShift::Config.new
config_log_file = config.get(profile[:file_config])
config_log_level = config.get(profile[:level_config])
if config_log_level && Logger::Severity.const_defined?(config_log_level)
log_level = Logger::Severity.const_get(config_log_level)
end
if config_log_file
log_file = config_log_file
end
rescue => e
Logger.new(STDERR).error { "Failed to apply logging configuration #{profile}: #{e.message}" }
end
FileUtils.mkpath(File.dirname(log_file)) unless File.exist? File.dirname(log_file)
file = if File.exist?(log_file)
File.open(log_file, File::WRONLY | File::APPEND)
else
File.open(log_file, File::WRONLY | File::APPEND| File::CREAT, 0644)
end
file.sync = true
logger = Logger.new(file, 5, 10 * 1024 * 1024)
logger.level = log_level
logger
rescue Exception => e
Logger.new(STDERR).error { "Failed to create logger; falling back to STDOUT: #{e.message}" }
Logger.new(STDOUT)
end
end