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

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

Defined Under Namespace

Classes: AgentListener, LoggerInfo

Class Attribute Summary collapse

Instance Attribute Summary collapse

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

#type

Class Method Summary collapse

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.



117
118
119
120
121
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 117

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

Class Attribute Details

.log_item_mapObject (readonly)

Mapping table for format



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

def log_item_map
  @log_item_map
end

Instance Attribute Details

#file_extObject (readonly)

Returns the value of attribute file_ext.



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

def file_ext
  @file_ext
end

#file_prefixObject (readonly)

Log send_file name parts



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

def file_prefix
  @file_prefix
end

#formatObject (readonly)

Log format



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

def format
  @format
end

#log_itemsObject (readonly)

Log items



113
114
115
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 113

def log_items
  @log_items
end

#loggersObject (readonly)

Returns the value of attribute loggers.



115
116
117
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 115

def loggers
  @loggers
end

Class Method Details

.make_mapObject



273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 273

def self.make_map
  @log_item_map = {}
  @log_item_map["a"] = LogItems::RemoteIpItem
  @log_item_map["A"] = LogItems::ServerIpItem
  @log_item_map["b"] = LogItems::RequestBytesItem2
  @log_item_map["B"] = LogItems::RequestBytesItem1
  @log_item_map["c"] = LogItems::ConnectionStatusItem
  @log_item_map["e"] = LogItems::NullItem
  @log_item_map["h"] = LogItems::RemoteHostItem
  @log_item_map["H"] = LogItems::ProtocolItem
  @log_item_map["i"] = LogItems::RequestHeaderItem
  @log_item_map["l"] = LogItems::RemoteLogItem
  @log_item_map["m"] = LogItems::MethodItem
  @log_item_map["n"] = LogItems::NullItem
  @log_item_map["o"] = LogItems::ResponseHeaderItem
  @log_item_map["p"] = LogItems::PortItem
  @log_item_map["P"] = LogItems::NullItem
  @log_item_map["q"] = LogItems::QueryStringItem
  @log_item_map["r"] = LogItems::StartLineItem
  @log_item_map["s"] = LogItems::StatusItem
  @log_item_map[">s"] = LogItems::StatusItem
  @log_item_map["t"] = LogItems::TimeItem
  @log_item_map["T"] = LogItems::IntervalItem
  @log_item_map["u"] = LogItems::RemoteUserItem
  @log_item_map["U"] = LogItems::RequestUrlItem
  @log_item_map["v"] = LogItems::ServerNameItem
  @log_item_map["V"] = LogItems::NullItem
end

Instance Method Details

#init(elm, parent) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 123

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



153
154
155
156
157
158
159
160
161
162
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 153

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

  else
    return false
  end
  true
end

#log(tour) ⇒ Object



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
# File 'lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb', line 164

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
    info = @loggers[tour.ship.agent_id]
    if info.rudder_state == nil
      info.rudder_state = RudderStateStore.get_store(tour.ship.agent_id).rent()
      info.rudder_state.init(info.rudder)
      info.rudder_state.bytes_wrote = info.file_size
      info.multiplexer.add_rudder_state(info.rudder, info.rudder_state)
      info.registered = true
    end

    info.multiplexer.req_write(
      info.rudder,
      sb,
      nil,
      "log"
    )
  end
end