|
19 | 19 | % * init - initialize logger object (open log file) |
20 | 20 | % * set_file - open log file, after closing any already open |
21 | 21 | % * printf - prints to log |
| 22 | +% * warning - warnings to log |
22 | 23 | % * manage - handle actions forwarded from mp.logger.manager |
23 | 24 | % * finalize - finalize logger object (close log file) |
24 | 25 | % * manager - manage the logger object used by mp_printf and mp_disp |
|
167 | 168 | end |
168 | 169 | end |
169 | 170 |
|
| 171 | + function obj = warning(obj, varargin) |
| 172 | + % Warnings to log. |
| 173 | + % :: |
| 174 | + % |
| 175 | + % obj.warning(...) |
| 176 | + % |
| 177 | + % Inputs are identical to those of ``warning()``. Note, this |
| 178 | + % function is only for throwing a warning, not querying or |
| 179 | + % controlling warning status. |
| 180 | + |
| 181 | + if nargin < 2 |
| 182 | + error('mp.logger.warning: no warning message'); |
| 183 | + else |
| 184 | + if obj.fid > 0 %% warn to log file |
| 185 | + msg = sprintf(varargin{:}); |
| 186 | + lastwarn(msg); |
| 187 | + st = dbstack('-completenames'); |
| 188 | + if have_feature('matlab') |
| 189 | + fprintf(obj.fid, 'Warning: %s\n', msg); |
| 190 | + if length(st) > 0 |
| 191 | + fprintf(obj.fid, '> '); |
| 192 | + end |
| 193 | + for k = 2:length(st) |
| 194 | + fprintf(obj.fid, 'In %s (line %d)\n', ... |
| 195 | + st(k).name, st(k).line); |
| 196 | + end |
| 197 | + else |
| 198 | + fprintf(obj.fid, 'warning: %s\n', msg); |
| 199 | + if length(st) > 0 |
| 200 | + fprintf(obj.fid, 'warning: called from\n'); |
| 201 | + end |
| 202 | + for k = 2:length(st) |
| 203 | + fprintf(obj.fid, ' %s at line %d column %d\n', ... |
| 204 | + st(k).name, st(k).line, st(k).column); |
| 205 | + end |
| 206 | + fprintf(obj.fid, '\n'); |
| 207 | + end |
| 208 | + if obj.manual_flush |
| 209 | + fflush(obj.fid); |
| 210 | + end |
| 211 | + else |
| 212 | + error('mp.logger.warning: log file not open'); |
| 213 | + end |
| 214 | + end |
| 215 | + end |
| 216 | + |
170 | 217 | function varargout = manage(obj, action, varargin) |
171 | 218 | % Handle actions forwarded from mp.logger.manager. |
172 | 219 | % :: |
|
0 commit comments