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
21 % 2. > verbose('level
',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
27 % 1. > level = verbose();
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);
function r = verbose(level, message, messageId)
This function displays messages depending on a message-id and/or a level. Aditionally you can set/res...