| % 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. |
| |
| -module(twig_util). |
| |
| -export([format/2, get_env/2, level/1, facility/1, iso8601_timestamp/0]). |
| |
| level(debug) -> 7; |
| level(info) -> 6; |
| level(notice) -> 5; |
| level(warn) -> 4; |
| level(warning) -> 4; |
| level(err) -> 3; |
| level(error) -> 3; |
| level(crit) -> 2; |
| level(alert) -> 1; |
| level(emerg) -> 0; |
| level(panic) -> 0; |
| |
| level(I) when is_integer(I), I >= 0, I =< 7 -> |
| I; |
| level(_BadLevel) -> |
| 3. |
| |
| facility(kern) -> (0 bsl 3) ; % kernel messages |
| facility(user) -> (1 bsl 3) ; % random user-level messages |
| facility(mail) -> (2 bsl 3) ; % mail system |
| facility(daemon) -> (3 bsl 3) ; % system daemons |
| facility(auth) -> (4 bsl 3) ; % security/authorization messages |
| facility(syslog) -> (5 bsl 3) ; % messages generated internally by syslogd |
| facility(lpr) -> (6 bsl 3) ; % line printer subsystem |
| facility(news) -> (7 bsl 3) ; % network news subsystem |
| facility(uucp) -> (8 bsl 3) ; % UUCP subsystem |
| facility(cron) -> (9 bsl 3) ; % clock daemon |
| facility(authpriv) -> (10 bsl 3); % security/authorization messages (private) |
| facility(ftp) -> (11 bsl 3); % ftp daemon |
| |
| facility(local0) -> (16 bsl 3); |
| facility(local1) -> (17 bsl 3); |
| facility(local2) -> (18 bsl 3); |
| facility(local3) -> (19 bsl 3); |
| facility(local4) -> (20 bsl 3); |
| facility(local5) -> (21 bsl 3); |
| facility(local6) -> (22 bsl 3); |
| facility(local7) -> (23 bsl 3). |
| |
| |
| iso8601_timestamp() -> |
| {_,_,Micro} = Now = os:timestamp(), |
| {{Year,Month,Date},{Hour,Minute,Second}} = calendar:now_to_datetime(Now), |
| Format = "~4.10.0B-~2.10.0B-~2.10.0BT~2.10.0B:~2.10.0B:~2.10.0B.~6.10.0BZ", |
| io_lib:format(Format, [Year, Month, Date, Hour, Minute, Second, Micro]). |
| |
| format(Format, Data) -> |
| MaxTermSize = get_env(max_term_size, 8192), |
| case erts_debug:flat_size(Data) > MaxTermSize of |
| true -> |
| MaxString = get_env(max_message_size, 16000), |
| {Truncated, _} = trunc_io:print(Data, MaxString), |
| ["*Truncated* ", Format, " - ", Truncated]; |
| false -> |
| io_lib:format(Format, Data) |
| end. |
| |
| get_env(Key, Default) -> |
| case application:get_env(twig, Key) of |
| {ok, Value} -> |
| Value; |
| undefined -> |
| Default |
| end. |