| -- |
| -- Licensed to the Apache Software Foundation (ASF) under one or more |
| -- contributor license agreements. See the NOTICE file distributed with |
| -- this work for additional information regarding copyright ownership. |
| -- The ASF licenses this file to You 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. |
| -- |
| local LOG_EMERG = 0 -- system is unusable |
| local LOG_ALERT = 1 -- action must be taken immediately |
| local LOG_CRIT = 2 -- critical conditions |
| local LOG_ERR = 3 -- error conditions |
| local LOG_WARNING = 4 -- warning conditions |
| local LOG_NOTICE = 5 -- normal but significant condition |
| local LOG_INFO = 6 -- informational |
| local LOG_DEBUG = 7 -- debug-level messages |
| |
| local LOG_KERN = 0 -- kernel messages |
| local LOG_USER = 1 -- random user-level messages |
| local LOG_MAIL = 2 -- mail system |
| local LOG_DAEMON = 3 -- system daemons |
| local LOG_AUTH = 4 -- security/authorization messages |
| local LOG_SYSLOG = 5 -- messages generated internally by syslogd |
| local LOG_LPR = 6 -- line printer subsystem |
| local LOG_NEWS = 7 -- network news subsystem |
| local LOG_UUCP = 8 -- UUCP subsystem |
| local LOG_CRON = 9 -- clock daemon |
| local LOG_AUTHPRIV = 10 -- security/authorization messages (private) |
| local LOG_FTP = 11 -- FTP daemon |
| local LOG_LOCAL0 = 16 -- reserved for local use |
| local LOG_LOCAL1 = 17 -- reserved for local use |
| local LOG_LOCAL2 = 18 -- reserved for local use |
| local LOG_LOCAL3 = 19 -- reserved for local use |
| local LOG_LOCAL4 = 20 -- reserved for local use |
| local LOG_LOCAL5 = 21 -- reserved for local use |
| local LOG_LOCAL6 = 22 -- reserved for local use |
| local LOG_LOCAL7 = 23 -- reserved for local use |
| |
| local Facility = { |
| KERN = LOG_KERN, |
| USER = LOG_USER, |
| MAIL = LOG_MAIL, |
| DAEMON = LOG_DAEMON, |
| AUTH = LOG_AUTH, |
| SYSLOG = LOG_SYSLOG, |
| LPR = LOG_LPR, |
| NEWS = LOG_NEWS, |
| UUCP = LOG_UUCP, |
| CRON = LOG_CRON, |
| AUTHPRIV = LOG_AUTHPRIV, |
| FTP = LOG_FTP, |
| LOCAL0 = LOG_LOCAL0, |
| LOCAL1 = LOG_LOCAL1, |
| LOCAL2 = LOG_LOCAL2, |
| LOCAL3 = LOG_LOCAL3, |
| LOCAL4 = LOG_LOCAL4, |
| LOCAL5 = LOG_LOCAL5, |
| LOCAL6 = LOG_LOCAL6, |
| LOCAL7 = LOG_LOCAL7, |
| } |
| |
| local Severity = { |
| EMEGR = LOG_EMERG, |
| ALERT = LOG_ALERT, |
| CRIT = LOG_CRIT, |
| ERR = LOG_ERR, |
| WARNING = LOG_WARNING, |
| NOTICE = LOG_NOTICE, |
| INFO = LOG_INFO, |
| DEBUG = LOG_DEBUG, |
| } |
| |
| local log_util = require("apisix.utils.log-util") |
| local ipairs = ipairs |
| local str_format = string.format |
| |
| local _M = { version = 0.1 } |
| |
| |
| function _M.encode(facility, severity, hostname, appname, pid, msg, structured_data) |
| local pri = (Facility[facility] * 8 + Severity[severity]) |
| local t = log_util.get_rfc3339_zulu_timestamp() |
| if not hostname then |
| hostname = "-" |
| end |
| |
| if not appname then |
| appname = "-" |
| end |
| |
| local structured_data_str = "-" |
| |
| if structured_data then |
| structured_data_str = "[logservice" |
| for _, sd_param in ipairs(structured_data) do |
| structured_data_str = structured_data_str .. " " .. sd_param.name |
| .. "=\"" .. sd_param.value .. "\"" |
| end |
| structured_data_str = structured_data_str .. "]" |
| end |
| |
| return str_format("<%d>1 %s %s %s %d - %s %s\n", pri, t, hostname, |
| appname, pid, structured_data_str, msg) |
| end |
| |
| return _M |