From f97921c7ea300ddfce3c37735a6373bd85e55da1 Mon Sep 17 00:00:00 2001
From: Hans Bolinder
Date: Mon, 15 May 2017 14:27:00 +0200
Subject: kernel: Add error_logger:limit_term/1
Calling error_logger:limit_term/1 before sending terms as events to
the error_logger can be used for limiting the size of the messages.
Doing so will not change the output, but potentially save memory.
The Kernel variable error_logger_format_depth is used when limiting
the size of terms.
---
lib/kernel/src/error_logger.erl | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
(limited to 'lib/kernel')
diff --git a/lib/kernel/src/error_logger.erl b/lib/kernel/src/error_logger.erl
index 81f1bf8d97..93a3f4f2e5 100644
--- a/lib/kernel/src/error_logger.erl
+++ b/lib/kernel/src/error_logger.erl
@@ -31,6 +31,8 @@
handle_event/2, handle_call/2, handle_info/2,
terminate/2]).
+-export([limit_term/1]).
+
-define(buffer_size, 10).
%%-----------------------------------------------------------------
@@ -518,3 +520,19 @@ string_p1([H|T]) when is_list(H) ->
end;
string_p1([]) -> true;
string_p1(_) -> false.
+
+-spec limit_term(term()) -> term().
+
+limit_term(Term) ->
+ case get_depth() of
+ unlimited -> Term;
+ D -> io_lib:limit_term(Term, D)
+ end.
+
+get_depth() ->
+ case application:get_env(kernel, error_logger_format_depth) of
+ {ok, Depth} when is_integer(Depth) ->
+ max(10, Depth);
+ undefined ->
+ unlimited
+ end.
--
cgit v1.2.3
From a99b0a2a570e7429b05f3ce424880744ee3a8814 Mon Sep 17 00:00:00 2001
From: Hans Bolinder
Date: Wed, 17 May 2017 16:16:58 +0200
Subject: kernel: Introcude error_logger:get_format_depth()
---
lib/kernel/doc/src/error_logger.xml | 15 ++++++++++++++-
lib/kernel/src/error_logger.erl | 8 +++++---
2 files changed, 19 insertions(+), 4 deletions(-)
(limited to 'lib/kernel')
diff --git a/lib/kernel/doc/src/error_logger.xml b/lib/kernel/doc/src/error_logger.xml
index 814e8eac46..27db00819f 100644
--- a/lib/kernel/doc/src/error_logger.xml
+++ b/lib/kernel/doc/src/error_logger.xml
@@ -4,7 +4,7 @@
- 19962016
+ 19962017
Ericsson AB. All Rights Reserved.
@@ -162,6 +162,19 @@ ok
error_report/1.
+
+
+ Get the value of the Kernel application variable
+ error_logger_format_depth.
+
+ Returns max(10, Depth), where Depth is the
+ value of
+
+ error_logger_format_depth
+ in the Kernel application, if Depth is an integer. Otherwise,
+ unlimited is returned.
+
+
diff --git a/lib/kernel/src/error_logger.erl b/lib/kernel/src/error_logger.erl
index 93a3f4f2e5..9bf8547745 100644
--- a/lib/kernel/src/error_logger.erl
+++ b/lib/kernel/src/error_logger.erl
@@ -31,7 +31,7 @@
handle_event/2, handle_call/2, handle_info/2,
terminate/2]).
--export([limit_term/1]).
+-export([get_format_depth/0, limit_term/1]).
-define(buffer_size, 10).
@@ -524,12 +524,14 @@ string_p1(_) -> false.
-spec limit_term(term()) -> term().
limit_term(Term) ->
- case get_depth() of
+ case get_format_depth() of
unlimited -> Term;
D -> io_lib:limit_term(Term, D)
end.
-get_depth() ->
+-spec get_format_depth() -> 'unlimited' | pos_integer().
+
+get_format_depth() ->
case application:get_env(kernel, error_logger_format_depth) of
{ok, Depth} when is_integer(Depth) ->
max(10, Depth);
--
cgit v1.2.3