diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-02-22 21:49:42 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-02-22 21:49:42 +0000 |
| commit | 2b0a070ee5463bc12bd6c1ea3799f634571f00b7 (patch) | |
| tree | a06102200cf6258658649b101ad04c5fad2dd346 /docker | |
| parent | 558190592e9dfd6e221e4caeb9e1bf77e22b0fc4 (diff) | |
| parent | e6a9b9627a2baced96aab77f4c141af39814161e (diff) | |
| download | kolla-2b0a070ee5463bc12bd6c1ea3799f634571f00b7.tar.gz kolla-2b0a070ee5463bc12bd6c1ea3799f634571f00b7.zip | |
Merge "Fix Swift logging"
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/heka/plugins/decoders/os_swift_log.lua | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/docker/heka/plugins/decoders/os_swift_log.lua b/docker/heka/plugins/decoders/os_swift_log.lua new file mode 100644 index 000000000..440e9ab08 --- /dev/null +++ b/docker/heka/plugins/decoders/os_swift_log.lua @@ -0,0 +1,49 @@ +-- Copyright 2016 Mirantis, Inc. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +-- The code in this file was inspired by Heka's rsyslog.lua decoder plugin. +-- https://github.com/mozilla-services/heka/blob/master/sandbox/lua/decoders/rsyslog.lua + +local syslog = require "syslog" +local utils = require "os_utils" + +local msg = { + Timestamp = nil, + Type = 'Syslog', + Hostname = read_config("hostname"), + Payload = nil, + Pid = nil, + Severity = nil, + Fields = nil +} + +-- See https://github.com/openstack/swift/blob/2a8b455/swift/common/utils.py#L1423-L1424 +local swift_grammar = syslog.build_rsyslog_grammar('<%PRI%>%programname%: %msg%') + +function process_message () + local log = read_message("Payload") + + local fields = swift_grammar:match(log) + if not fields then return -1 end + + msg.Severity = fields.pri.severity + fields.syslogfacility = fields.pri.facility + fields.pri = nil + + msg.Payload = fields.msg + fields.msg = nil + + msg.Fields = fields + return utils.safe_inject_message(msg) +end |
