class CliApplication::Log::File

Attributes

filename[R]
folder[R]

Public Class Methods

new(app, log, class_folder) click to toggle source
# File lib/cli_application/log/file.rb, line 7
def initialize(app, log, class_folder)
  @app = app
  @log = log
  @class_folder = class_folder
  init_log
end

Public Instance Methods

log(message) click to toggle source
# File lib/cli_application/log/file.rb, line 38
def log(message)
  ::File.open(@filename, 'a') {|f| f.write message + "\n" }
  ::File.chmod(0777, @filename)
end
save_app_finish_information() click to toggle source
# File lib/cli_application/log/file.rb, line 27
def save_app_finish_information
  log(I18n.t('config.log_section.finish_header'))
  unless @exception.nil?
    log(@exception.message)
    log(@exception.backtrace.join("\n"))
  end
  log(I18n.t('config.log_section.app_executed_at', time: Time.zone.now, executed_at: @app.executed_at.round(3)))
  log(I18n.t('config.log_section.app_memory', value: StTools::Human.memory))
  log(I18n.t('config.log_section.app_exitcode', exitcode: @app.exitcode, status: ((@app.exitcode == 0 ? 'SUCCESS' : 'FAIL'))))
end
save_app_run_information() click to toggle source
# File lib/cli_application/log/file.rb, line 22
def save_app_run_information
  log(I18n.t('config.log_section.run_header'))
  log("")
end
save_app_start_information() click to toggle source
# File lib/cli_application/log/file.rb, line 14
def save_app_start_information
  log(I18n.t('config.log_section.start_header'))
  log(I18n.t('config.log_section.app_name', name: $PROGRAM_NAME))
  log(I18n.t('config.log_section.app_script_name', name: ::File.basename($PROGRAM_NAME)))
  log(I18n.t('config.log_section.app_started_at', time: Time.zone.now))
  log("")
end

Private Instance Methods

check_folder() click to toggle source
# File lib/cli_application/log/file.rb, line 70
def check_folder
  if Dir.exists?(@folder)
    # s = Dir.stat(@filename)
    # puts "Dir >>>>>>>>>>>>>>>>>> #{s.mode}"
  end
end
check_folder_and_file() click to toggle source

Проверка на доступность папки и файла. Если с этим проблема, то выбрасываем исключение, чтобы уже на этапе отладки было понятно, что при запуске приложения из под cron будут проблемы

# File lib/cli_application/log/file.rb, line 56
def check_folder_and_file
  if ::File.exists?(@filename)
    delete_file
  else
    check_folder
  end
end
create_folder() click to toggle source
# File lib/cli_application/log/file.rb, line 77
def create_folder
  unless Dir.exists?(@folder)
    Dir.mkdir(@folder, 0777)
  end
end
delete_file() click to toggle source

Проверка на возможность дописывать в вфайл из под любого пользователя Если права не XXX, то выбрасываем исключение

# File lib/cli_application/log/file.rb, line 66
def delete_file
  ::File.delete(@filename)
end
init_log() click to toggle source
# File lib/cli_application/log/file.rb, line 47
def init_log
  init_names
  create_folder
  check_folder_and_file
end
init_names() click to toggle source
# File lib/cli_application/log/file.rb, line 83
def init_names
  if @log.log_section.location.nil?
    # Локация не задана
    @folder = ::File.join(@class_folder, 'logs')
  else
    # Локация в конфиге задана
    @folder = @log.log_section.location
  end
  @filename = ::File.join(@folder, ::File.basename($PROGRAM_NAME, '.rb')+'.log')
end