aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-02-22 21:49:42 +0000
committerGerrit Code Review <review@openstack.org>2016-02-22 21:49:42 +0000
commit2b0a070ee5463bc12bd6c1ea3799f634571f00b7 (patch)
treea06102200cf6258658649b101ad04c5fad2dd346 /docker
parent558190592e9dfd6e221e4caeb9e1bf77e22b0fc4 (diff)
parente6a9b9627a2baced96aab77f4c141af39814161e (diff)
downloadkolla-2b0a070ee5463bc12bd6c1ea3799f634571f00b7.tar.gz
kolla-2b0a070ee5463bc12bd6c1ea3799f634571f00b7.zip
Merge "Fix Swift logging"
Diffstat (limited to 'docker')
-rw-r--r--docker/heka/plugins/decoders/os_swift_log.lua49
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