You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.8 KiB

  1. -module(lager_msg).
  2. -export([new/4, new/5]).
  3. -export([message/1]).
  4. -export([timestamp/1]).
  5. -export([datetime/1]).
  6. -export([severity/1]).
  7. -export([severity_as_int/1]).
  8. -export([metadata/1]).
  9. -export([destinations/1]).
  10. -record(lager_msg,{
  11. destinations :: list(),
  12. metadata :: [tuple()],
  13. severity :: lager:log_level(),
  14. datetime :: {string(), string()},
  15. timestamp :: erlang:timestamp(),
  16. message :: list()
  17. }).
  18. -opaque lager_msg() :: #lager_msg{}.
  19. -export_type([lager_msg/0]).
  20. %% create with provided timestamp, handy for testing mostly
  21. -spec new(list(), erlang:timestamp(), lager:log_level(), [tuple()], list()) -> lager_msg().
  22. new(Msg, Timestamp, Severity, Metadata, Destinations) ->
  23. {Date, Time} = lager_util:format_time(lager_util:maybe_utc(lager_util:localtime_ms(Timestamp))),
  24. #lager_msg{message=Msg, datetime={Date, Time}, timestamp=Timestamp, severity=Severity,
  25. metadata=Metadata, destinations=Destinations}.
  26. -spec new(list(), lager:log_level(), [tuple()], list()) -> lager_msg().
  27. new(Msg, Severity, Metadata, Destinations) ->
  28. Now = os:timestamp(),
  29. new(Msg, Now, Severity, Metadata, Destinations).
  30. -spec message(lager_msg()) -> list().
  31. message(Msg) ->
  32. Msg#lager_msg.message.
  33. -spec timestamp(lager_msg()) -> erlang:timestamp().
  34. timestamp(Msg) ->
  35. Msg#lager_msg.timestamp.
  36. -spec datetime(lager_msg()) -> {string(), string()}.
  37. datetime(Msg) ->
  38. Msg#lager_msg.datetime.
  39. -spec severity(lager_msg()) -> lager:log_level().
  40. severity(Msg) ->
  41. Msg#lager_msg.severity.
  42. -spec severity_as_int(lager_msg()) -> lager:log_level_number().
  43. severity_as_int(Msg) ->
  44. lager_util:level_to_num(Msg#lager_msg.severity).
  45. -spec metadata(lager_msg()) -> [tuple()].
  46. metadata(Msg) ->
  47. Msg#lager_msg.metadata.
  48. -spec destinations(lager_msg()) -> list().
  49. destinations(Msg) ->
  50. Msg#lager_msg.destinations.