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