1 function r =
verbose( level, message, messageId)
2 %
function r =
verbose( level, message, messageId )
3 % This
function displays messages depending on a message-
id and/or a level.
4 % Aditionally you can set/reset the level-filer and add ore remove message-ids
5 % to the include and exclude lists.
7 % When messages will be displayed?
8 % --------------------------------
9 % A Messages only will be diplayed only then if one of the following situation applies.
10 % 1. The message-
id is listet in the include list
11 % 2. The messages level is lower or equal to the previously set and the message-
id don't
12 % appear in the exclude list
16 % To use the basic operation of verbose, only one or two arguments,
17 % the level and the message are necessary.
19 % three ways to set the verbosity level e.g. to 10
22 % 3. > oldVerbLev =
verbose(10); % change level to 10
23 % > one_of_my_functions(); % ... some code ...
24 % >
verbose(oldVerbLevel); % reset level to value before changed
26 %
get the current verbosity level
28 % 2. > level =
verbose(
'level');
30 % message output (verbosity level previously
set to 10)
31 % >
verbose(10,
'Hello World!'); % message will be displayed
32 % >
verbose(11,
'Hello World!'); % ... won
't ...
33 % > verbose(1, 'Hello World!
'); % ... will ...
37 % The third argument, the message-id enables you to specify more precisely
38 % what should be displayed or not.
40 % add/remove one or more message-ids to the include-/excludelist
41 % > verbose('addInclude
', 'RB:ERROR
'); % add 'RB:ERROR
' to the include list
42 % > verbose('addInclude
', {'RB:WARNING
', 'RB:INFO
'}); % add 'RB:WARNING
' and RB:INFO ...
43 % > verbose('include
'); % return includelist
44 % % e.g. {'RB:ERROR
', 'RB:WARNING
', 'RB:INFO
'}
45 % > verbose('addExclude
', {'RB:INFO
','RB:UNKNOWN
'}); % add 'RB:INFO
','RB:UNKNOWN
' to excludelist
46 % > verbose('delInclude
', {'RB:ERROR
','RB:INFO
'}); % remove 'RB:ERROR
' and 'RB:INFO
'
47 % > verbose('exclude
', {}); % clear exclude list
51 % > verbose('include
', {'RB:SURPRISE1
'});
52 % > verbose('exclude
', {'RB:SURPRISE2
'});
54 % > verbose(1, 'Hello World!
', 'RB:INFO
');
55 % > verbose(99, 'Hello What Happened
', 'RB:SURPRISE1
'); % displayed, cause RB:SURPRISE1 is in includelist
56 % > verbose(0, 'Surprise
for you?
'); % no, you don't
get it, it
's excluded
61 % initialize structure VERBOSE
66 VERBOSE.addInclude = @(x) VERBOSE_addInclude(x);
67 VERBOSE.delInclude = @(x) VERBOSE_delInclude(x);
68 VERBOSE.addExclude = @(x) VERBOSE_addExclude(x);
69 VERBOSE.delExclude = @(x) VERBOSE_delExclude(x);
78 if ( level <= VERBOSE.level )
85 [paths,fileName] = fileparts(st(2).file);
86 funcName = st(2).name;
87 lineNo = num2str(st(2).line);
89 messageId = sprintf('RB:%s:UNKNOWN
',fileName);
91 message = sprintf('%s file=%s func=%s line=%s\n ==>
''%s
''\r\n
', ...
92 messageId, fileName, funcName, lineNo, message);
95 messageId = 'RB:UNKNOWN:UNKNOWN
';
96 message = sprintf('RB:UNKNOWN:UNKNOWN\r\n ==>
''%s
''\r\n
', message);
98 message = sprintf('%s\r\n ==>
''%s
''\r\n
', messageId, message);
101 % filter by messageId and level
102 if (( ~isempty(VERBOSE.include ) && ( any(strcmp(messageId, VERBOSE.include )))) || ...
103 ((level<=VERBOSE.level) && ( isempty(VERBOSE.exclude ) || ( ~any(strcmp(messageId, VERBOSE.exclude ))))))
107 elseif ( nargin == 1 )
109 VERBOSE.level = level;
113 if isfield(VERBOSE, level)
114 if isa(VERBOSE.(level), 'function_handle
')
115 % call function field
116 r = VERBOSE.(level)(message);
122 VERBOSE.(level) = message;
126 verbose( 0, 'first argument is a unknown field.
', 'RB:VERBOSE:ARGERR
');
129 verbose( 0, 'first argument should be of type numeric or character.
', 'RB:VERBOSE:ARGERR
');
133 function r = VERBOSE_addExclude(c)
136 VERBOSE.exclude = union(VERBOSE.exclude, c);
139 function r = VERBOSE_delExclude(c)
142 VERBOSE.exclude = setdiff(VERBOSE.exclude, c);
145 function r = VERBOSE_addInclude(c)
148 VERBOSE.include = union(VERBOSE.include, c);
151 function r = VERBOSE_delInclude(c)
154 VERBOSE.include = setdiff(VERBOSE.include, c);