| %% |
| %% %CopyrightBegin% |
| %% |
| %% Copyright Ericsson AB 1996-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(sync_error_logger). |
| |
| %% The error_logger API, but synchronous! |
| %% This is helpful for tests, otherwise you need lots of nasty timer:sleep. |
| %% Additionally, the warning map can be set on a per-process level, for |
| %% convienience, via the process dictionary value `warning_map'. |
| |
| -export([ |
| info_msg/1, info_msg/2, |
| warning_msg/1, warning_msg/2, |
| error_msg/1,error_msg/2 |
| ]). |
| |
| -export([ |
| info_report/1, info_report/2, |
| warning_report/1, warning_report/2, |
| error_report/1, error_report/2 |
| ]). |
| |
| info_msg(Format) -> |
| info_msg(Format, []). |
| |
| info_msg(Format, Args) -> |
| gen_event:sync_notify(error_logger, {info_msg, group_leader(), {self(), Format, Args}}). |
| |
| warning_msg(Format) -> |
| warning_msg(Format, []). |
| |
| warning_msg(Format, Args) -> |
| gen_event:sync_notify(error_logger, {warning_msg_tag(), group_leader(), {self(), Format, Args}}). |
| |
| error_msg(Format) -> |
| error_msg(Format, []). |
| |
| error_msg(Format, Args) -> |
| gen_event:sync_notify(error_logger, {error, group_leader(), {self(), Format, Args}}). |
| |
| info_report(Report) -> |
| info_report(std_info, Report). |
| |
| info_report(Type, Report) -> |
| gen_event:sync_notify(error_logger, {info_report, group_leader(), {self(), Type, Report}}). |
| |
| warning_report(Report) -> |
| warning_report(std_warning, Report). |
| |
| warning_report(Type, Report) -> |
| {Tag, NType} = warning_report_tag(Type), |
| gen_event:sync_notify(error_logger, {Tag, group_leader(), {self(), NType, Report}}). |
| |
| error_report(Report) -> |
| error_report(std_error, Report). |
| |
| error_report(Type, Report) -> |
| gen_event:sync_notify(error_logger, {error_report, group_leader(), {self(), Type, Report}}). |
| |
| warning_msg_tag() -> |
| case get(warning_map) of |
| warning -> warning_msg; |
| info -> info_msg; |
| _ -> error |
| end. |
| |
| warning_report_tag(Type) -> |
| case {get(warning_map), Type == std_warning} of |
| {warning, _} -> {warning_report, Type}; |
| {info, true} -> {info_report, std_info}; |
| {info, false} -> {info_report, Type}; |
| {_, true} -> {error_report, std_error}; |
| {_, false} -> {error_report, Type} |
| end. |