diff options
Diffstat (limited to 'lib/snmp/src/misc/snmp_verbosity.erl')
-rw-r--r-- | lib/snmp/src/misc/snmp_verbosity.erl | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/lib/snmp/src/misc/snmp_verbosity.erl b/lib/snmp/src/misc/snmp_verbosity.erl new file mode 100644 index 0000000000..85037ba2ae --- /dev/null +++ b/lib/snmp/src/misc/snmp_verbosity.erl @@ -0,0 +1,161 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +-module(snmp_verbosity). + +-include_lib("stdlib/include/erl_compile.hrl"). + +-export([print/4,print/5,printc/4,validate/1]). + +-export([process_args/2]). + +print(silence,_Severity,_Format,_Arguments) -> + ok; +print(Verbosity,Severity,Format,Arguments) -> + print1(printable(Verbosity,Severity),Format,Arguments). + + +print(silence,_Severity,_Module,_Format,_Arguments) -> + ok; +print(Verbosity,Severity,Module,Format,Arguments) -> + print1(printable(Verbosity,Severity),Module,Format,Arguments). + + +printc(silence,_Severity,_Format,_Arguments) -> + ok; +printc(Verbosity,Severity,Format,Arguments) -> + print2(printable(Verbosity,Severity),Format,Arguments). + + +print1(false,_Format,_Arguments) -> ok; +print1(Verbosity,Format,Arguments) -> + V = image_of_verbosity(Verbosity), + S = image_of_sname(get(sname)), + A = process_args(Arguments, []), + (catch io:format("*** [~s] SNMP ~s ~s *** ~n" + " " ++ Format ++ "~n", + [timestamp(), S, V | A])). + +print1(false,_Module,_Format,_Arguments) -> ok; +print1(Verbosity,Module,Format,Arguments) -> + V = image_of_verbosity(Verbosity), + S = image_of_sname(get(sname)), + A = process_args(Arguments, []), + (catch io:format("*** [~s] SNMP ~s ~s ~s *** ~n" + " " ++ Format ++ "~n", + [timestamp(), S, Module, V | A])). + + +print2(false,_Format,_Arguments) -> ok; +print2(_Verbosity,Format,Arguments) -> + A = process_args(Arguments, []), + (catch io:format(Format ++ "~n",A)). + + +timestamp() -> + format_timestamp(now()). + +format_timestamp({_N1, _N2, N3} = Now) -> + {Date, Time} = calendar:now_to_datetime(Now), + {YYYY,MM,DD} = Date, + {Hour,Min,Sec} = Time, + FormatDate = + io_lib:format("~.4w:~.2.0w:~.2.0w ~.2.0w:~.2.0w:~.2.0w 4~w", + [YYYY,MM,DD,Hour,Min,Sec,round(N3/1000)]), + lists:flatten(FormatDate). + +process_args([], Acc) -> + lists:reverse(Acc); +process_args([{vapply, {M,F,A}}|T], Acc) + when is_atom(M) andalso is_atom(F) andalso is_list(A) -> + process_args(T, [(catch apply(M,F,A))|Acc]); +process_args([H|T], Acc) -> + process_args(T, [H|Acc]). + + +%% printable(Verbosity,Severity) +printable(info,info) -> info; +printable(log,info) -> info; +printable(log,log) -> log; +printable(debug,info) -> info; +printable(debug,log) -> log; +printable(debug,debug) -> debug; +printable(trace,V) -> V; +printable(_Verb,_Sev) -> false. + + +image_of_verbosity(info) -> "INFO"; +image_of_verbosity(log) -> "LOG"; +image_of_verbosity(debug) -> "DEBUG"; +image_of_verbosity(trace) -> "TRACE"; +image_of_verbosity(_) -> "". + +%% ShortName +image_of_sname(ma) -> "MASTER-AGENT"; +image_of_sname(maw) -> io_lib:format("MASTER-AGENT-worker(~p)",[self()]); +image_of_sname(madis) -> io_lib:format("MASTER-AGENT-discovery_inform_sender(~p)", + [self()]); +image_of_sname(mais) -> io_lib:format("MASTER-AGENT-inform_sender(~p)", + [self()]); +image_of_sname(mats) -> io_lib:format("MASTER-AGENT-trap_sender(~p)", + [self()]); +image_of_sname(maph) -> io_lib:format("MASTER-AGENT-pdu_handler(~p)", + [self()]); +image_of_sname(sa) -> "SUB-AGENT"; +image_of_sname(saw) -> io_lib:format("SUB-AGENT-worker(~p)",[self()]); +image_of_sname(sais) -> io_lib:format("SUB-AGENT-inform_sender(~p)", + [self()]); +image_of_sname(sats) -> io_lib:format("SUB-AGENT-trap_sender(~p)", + [self()]); +image_of_sname(saph) -> io_lib:format("SUB-AGENT-pdu_handler(~p)", + [self()]); +image_of_sname(nif) -> "A-NET-IF"; +image_of_sname(ldb) -> "A-LOCAL-DB"; +image_of_sname(ns) -> "A-NOTE-STORE"; +image_of_sname(ss) -> "A-SYMBOLIC-STORE"; +image_of_sname(asup) -> "A-SUPERVISOR"; +image_of_sname(ms) -> "A-MIB-SERVER"; +image_of_sname(tcs) -> "A-TARGET-CACHE-SERVER"; +image_of_sname(conf) -> "A-CONF"; + +image_of_sname(abs) -> "A-BKP"; +image_of_sname(albs) -> "A-LDB-BKP"; +image_of_sname(ambs) -> "A-MS-BKP"; +image_of_sname(asbs) -> "A-SS-BKP"; +image_of_sname(mcbs) -> "M-C-BKP"; + +image_of_sname(mse) -> "M-SERVER"; +image_of_sname(msew) -> io_lib:format("M-SERVER-worker(~p)", [self()]); +image_of_sname(mns) -> "M-NOTE-STORE"; +image_of_sname(mnif) -> "M-NET-IF"; +image_of_sname(mconf) -> "M-CONF"; + +image_of_sname(mgr) -> "MGR"; +image_of_sname(mgr_misc) -> "MGR_MISC"; + +image_of_sname(undefined) -> ""; +image_of_sname(V) -> lists:flatten(io_lib:format("~p",[V])). + + +validate(info) -> info; +validate(log) -> log; +validate(debug) -> debug; +validate(trace) -> trace; +validate(_) -> silence. + |