Class: Baykit::BayServer::Docker::BuiltIn::BuiltInLogDocker

Inherits:
Baykit::BayServer::Docker::Base::DockerBase show all
Includes:
Agent, Bcf, Baykit::BayServer::Docker, Log, Util
Defined in:
lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb

Defined Under Namespace

Classes: AgentListener

Class Attribute Summary collapse

Instance Attribute Summary collapse

Attributes inherited from Baykit::BayServer::Docker::Base::DockerBase

#type

Instance Method Summary collapse

Methods included from Docker

#type

Methods inherited from Baykit::BayServer::Docker::Base::DockerBase

#init_docker, #to_s

Constructor Details

#initializeBuiltInLogDocker

Returns a new instance of BuiltInLogDocker.



109
110
111
112
113
114
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 109

def initialize
  @format = nil
  @log_items = []
  @rudders = {}
  @multiplexers = {}
end

Class Attribute Details

.log_item_mapObject (readonly)

Mapping table for format



91
92
93
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 91

def log_item_map
  @log_item_map
end

Instance Attribute Details

#file_extObject (readonly)

Returns the value of attribute file_ext.



96
97
98
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 96

def file_ext
  @file_ext
end

#file_prefixObject (readonly)

Log send_file name parts



95
96
97
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 95

def file_prefix
  @file_prefix
end

#formatObject (readonly)

Log format



99
100
101
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 99

def format
  @format
end

#log_itemsObject (readonly)

Log items



102
103
104
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 102

def log_items
  @log_items
end

#multiplexersObject (readonly)

Multiplexer to write to file



107
108
109
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 107

def multiplexers
  @multiplexers
end

#ruddersObject (readonly)

Returns the value of attribute rudders.



104
105
106
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 104

def rudders
  @rudders
end

Instance Method Details

#init(elm, parent) ⇒ Object



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 116

def init(elm, parent)
  super
  p = elm.arg.rindex('.')
  if p == nil
    @file_prefix = elm.arg
    @file_ext = ""
  else
    @file_prefix = elm.arg[0, p]
    @file_ext = elm.arg[p+1 .. -1]
  end

  if @format == nil
    raise ConfigException.new(elm.file_name, elm.line_no, BayMessage.get(:CFG_INVALID_LOG_FORMAT, ""))
  end

  if !File.absolute_path?(@file_prefix)
    @file_prefix = BayServer.get_location @file_prefix
  end

  log_dir = File.dirname(@file_prefix)
  if !File.directory?(log_dir)
    Dir.mkdir(log_dir)
  end

  # Parse format
  compile(@format, @log_items, elm.file_name, elm.line_no)

  GrandAgent.add_lifecycle_listener(AgentListener.new(self));
end

#init_key_val(kv) ⇒ Object



146
147
148
149
150
151
152
153
154
155
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 146

def init_key_val(kv)
  case kv.key.downcase
  when "format"
    @format = kv.value

  else
    return false
  end
  true
end

#log(tour) ⇒ Object



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 157

def log(tour)
  sb = StringUtil.alloc(0)
  @log_items.each do |item|
    item = item.get_item(tour).to_s
    if item == nil
      sb << "-"
    else
      sb << item
    end
  end

  # If threre are message to write, write it
  if sb.length > 0
    @multiplexers[tour.ship.agent_id].req_write(
      @rudders[tour.ship.agent_id],
      sb,
      nil,
      "log"
    )
  end
end