Class: Messagex::Messagex

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/messagex.rb

Overview

終了ステータス管理、ログ機能管理のクラス

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(initial_exitcode, initial_num, debug = :warn, logger = nil, logfname = nil) ⇒ Messagex

Note:

引数debugの値はLoggerクラスのログレベル設定とは指定方法が異なる

初期化

Parameters:

  • initial_exitcode (String)

    最初に登録する終了ステータスの識別名

  • initial_num (Integer)

    登録する終了ステータスの初期値

  • debug (Symbol) (defaults to: :warn)

    ログ機能のログレベル指定 ‘:debug`、`:verbose`、その他

  • logger (Loggerx) (defaults to: nil)

     複数のLoggerクラスのインスタンスを持つことが出来るLoggerxクラスのインスタンス

  • logfname (String) (defaults to: nil)

    ログの出力先ファイル名



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/messagex.rb', line 47

def initialize(initial_exitcode, initial_num, debug=:warn, logger=nil, logfname=nil)
  @exit_code = {}
  set_initial_exitcode(initial_exitcode, initial_num)

  if logger
    @logger = logger
  else
    log_fname = (!logfname.nil? && !logfname.empty?) ? logfname : "log.txt"
    @logger = Loggerx.new(log_fname)
    #    Logger::WARN , Logger::INFO

    case debug
    when :debug
      @logger.level = Logger::DEBUG
    # UNKNOWN > FATAL > ERROR > WARN > INFO > DEBUG
    when :verbose
      @logger.level = Logger::INFO
    else
      @logger.level = Logger::WARN
    end

    #    @logger.datetime_format = '%Y-%m-%d %H:%M:%S'
    @logger.datetime_format = ""
    # logger.formatter = proc do |severity, datetime, progname, msg|
    #   ">>>>>> #{msg}\n"
    # end
    @logger.formatter = proc do |_severity, _datetime, _progname, msg|
      "#{msg}\n"
    end
  end

  register_exitcodes
end

Instance Attribute Details

#loggerLoggerx (readonly)

Returns Loggerxクラスのインスタンス.

Returns:

  • (Loggerx)

    Loggerxクラスのインスタンス



32
33
34
# File 'lib/messagex.rb', line 32

def logger
  @logger
end

Instance Method Details

#add_exitcode(str) ⇒ Integer

終了ステータスの値の自動割り当て

Parameters:

  • str (String)

    値の自動割り当て対象の終了ステータスの識別名

Returns:

  • (Integer)

    自動割り当てされた終了ステータスの値



129
130
131
132
133
134
135
# File 'lib/messagex.rb', line 129

def add_exitcode(str)
  return if @exit_code[str]

  num = (@cur_exit_code + 1)
  @exit_code[str] = num
  @cur_exit_code = num
end

#ec(name) ⇒ Integer

識別名で指定された終了ステータスを得る

Parameters:

  • name (String)

    登録された終了ステータスの識別名

Returns:

  • (Integer)

    終了ステータス



108
109
110
# File 'lib/messagex.rb', line 108

def ec(name)
  @exit_code[name]
end

#excObject

See Also:



29
# File 'lib/messagex.rb', line 29

def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory

#exc_change_directoryObject

See Also:

  • Exc#exc_change_directory]


29
# File 'lib/messagex.rb', line 29

def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory

#exc_file_closeObject

See Also:



29
# File 'lib/messagex.rb', line 29

def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory

#exc_file_copyObject

See Also:



29
# File 'lib/messagex.rb', line 29

def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory

#exc_file_getsObject

See Also:



29
# File 'lib/messagex.rb', line 29

def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory

#exc_file_openObject

See Also:



29
# File 'lib/messagex.rb', line 29

def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory

#exc_file_readObject

See Also:



29
# File 'lib/messagex.rb', line 29

def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory

#exc_file_writeObject

See Also:



29
# File 'lib/messagex.rb', line 29

def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory

#exc_make_directoryObject



29
# File 'lib/messagex.rb', line 29

def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory

#output_debug(msg) ⇒ void

This method returns an undefined value.

ログレベルが DEBUG のメッセージを出力

Parameters:

  • msg (String)


168
169
170
171
172
173
174
# File 'lib/messagex.rb', line 168

def output_debug(msg)
  if @logger
    @logger.debug(msg)
  else
    STDOUT.puts(msg)
  end
end

#output_error(msg) ⇒ void

This method returns an undefined value.

ログレベルが ERROR のメッセージを出力

Parameters:

  • msg (String)


142
143
144
145
146
147
148
# File 'lib/messagex.rb', line 142

def output_error(msg)
  if @logger
    @logger.error(msg)
  else
    error(msg)
  end
end

#output_exception(exception) ⇒ void

This method returns an undefined value.

例外処理

Parameters:

  • exception (Exception)

    発生した例外



207
208
209
210
211
# File 'lib/messagex.rb', line 207

def output_exception(exception)
  output_fatal(exception.class)
  output_fatal(exception.message)
  output_fatal(exception.backtrace.join("\n"))
end

#output_fatal(msg) ⇒ void

This method returns an undefined value.

ログレベルが FATAL のメッセージを出力

Parameters:

  • msg (String)


155
156
157
158
159
160
161
# File 'lib/messagex.rb', line 155

def output_fatal(msg)
  if @logger
    @logger.fatal(msg)
  else
    STDOUT.puts(msg)
  end
end

#output_info(msg) ⇒ void

This method returns an undefined value.

ログレベルが INFO のメッセージを出力

Parameters:

  • msg (String)


181
182
183
184
185
186
187
# File 'lib/messagex.rb', line 181

def output_info(msg)
  if @logger
    @logger.info(msg)
  else
    STDOUT.puts(msg)
  end
end

#output_warn(msg) ⇒ void

This method returns an undefined value.

ログレベルが WARN のメッセージを出力

Parameters:

  • msg (String)


194
195
196
197
198
199
200
# File 'lib/messagex.rb', line 194

def output_warn(msg)
  if @logger
    @logger.warn(msg)
  else
    STDOUT.puts(msg)
  end
end

#register_excvoid

This method returns an undefined value.

I/O関連例外処理管理クラスのインスタンスの登録



99
100
101
# File 'lib/messagex.rb', line 99

def register_exc
  @exc_inst = Exc.new(self)
end

#register_exitcodesvoid

This method returns an undefined value.

Messagexクラスで利用する終了ステータスの登録



85
86
87
88
89
90
91
92
93
# File 'lib/messagex.rb', line 85

def register_exitcodes
  add_exitcode("EXIT_CODE_CANNOT_READ_FILE")
  add_exitcode("EXIT_CODE_CANNOT_WRITE_FILE")
  add_exitcode("EXIT_CODE_CANNOT_FIND_DIRECTORY")
  add_exitcode("EXIT_CODE_CANNOT_CHANGE_DIRECTORY")
  add_exitcode("EXIT_CODE_CANNOT_MAKE_DIRECTORY")
  add_exitcode("EXIT_CODE_CANNOT_OPEN_FILE")
  add_exitcode("EXIT_CODE_CANNOT_COPY_FILE")
end

#set_initial_exitcode(name, num) ⇒ void

This method returns an undefined value.

終了ステータスの最初の登録

Parameters:

  • name (String)

    登録する終了ステータスの識別名

  • num (Integer)

    登録する終了ステータスの値



118
119
120
121
122
# File 'lib/messagex.rb', line 118

def set_initial_exitcode(name, num)
  @exit_code ||= {}
  @exit_code[name] = num
  @cur_exit_code = num
end