Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added the ability to plug in a log function #7

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

alexthornton1
Copy link

Added the ability to plug in a log function in place of the existing
calls to io:fwrite and error_logger:format. The details are as follows:

(1) Added two new types to unsplit.hrl:

* log_type(), which is either the atom 'normal' or the atom 'error'.
  Each log message has one type or the other.
* log_fun(), which is the kind of fun that writes log messages.  It
  takes two arguments: a log_type() and a string().

(2) Added a key 'log_fun' to the {unsplit, ...} application environment
variable in unsplit.app.src. Its value is a tuple {Module, FunctionName}.

(3) Added a function unsplit:default_log_fun, which is what it sounds like:
the default log_fun when none is explicitly specified. It writes normal
messages using io:fwrite and error messages using error_logger:format,
mirroring previous functionality.

(4) Added three overloads of a function unsplit:log_write, which writes
messages (with or without formatting) to whatever log function has
been configured in the {unsplit, ...} application environment variable.

(5) Added a function unsplit:get_logger, which builds a fun that calls the
appropriate log_fun.

(6) Replaced all explicit calls to io:fwrite(...) with calls to
unsplit:log_write(normal, ...) instead.

(7) Replaced all explicit calls to error_logger:format(...) with calls to
unsplit:log_write(error, ...) instead.

(8) Regenerated unsplit.md documentation file.

When the new 'log_fun' application environment variable has its default
value, unsplit behaves as it did before. However, logging functionality
can now be plugged in to replace the existing functionality.

Added the ability to plug in a log function in place of the existing
calls to io:fwrite and error_logger:format.  The details are as follows:

(1) Added two new types to unsplit.hrl:

    * log_type(), which is either the atom 'normal' or the atom 'error'.
      Each log message has one type or the other.
    * log_fun(), which is the kind of fun that writes log messages.  It
      takes two arguments: a log_type() and a string().

(2) Added a key 'log_fun' to the {unsplit, ...} application environment
    variable in unsplit.app.src.  Its value is a tuple {Module, FunctionName}.

(3) Added a function unsplit:default_log_fun, which is what it sounds like:
    the default log_fun when none is explicitly specified.  It writes normal
    messages using io:fwrite and error messages using error_logger:format,
    mirroring previous functionality.

(4) Added three overloads of a function unsplit:log_write, which writes
    messages (with or without formatting) to whatever log function has
    been configured in the {unsplit, ...} application environment variable.

(5) Added a function unsplit:get_logger, which builds a fun that calls the
    appropriate log_fun.

(6) Replaced all explicit calls to io:fwrite(...) with calls to
    unsplit:log_write(normal, ...) instead.

(7) Replaced all explicit calls to error_logger:format(...) with calls to
    unsplit:log_write(error, ...) instead.

(8) Regenerated unsplit.md documentation file.

When the new 'log_fun' application environment variable has its default
value, unsplit behaves as it did before.  However, logging functionality
can now be plugged in to replace the existing functionality.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant