You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Alexey Kuznetsov (JIRA)" <ji...@apache.org> on 2018/07/17 12:57:00 UTC
[jira] [Comment Edited] (IGNITE-8570) Create lighter version of
GridStringLogger
[ https://issues.apache.org/jira/browse/IGNITE-8570?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16546552#comment-16546552 ]
Alexey Kuznetsov edited comment on IGNITE-8570 at 7/17/18 12:56 PM:
--------------------------------------------------------------------
[~andrey-kuznetsov] Actually I implemented API as you described :
user can subscribe either to a certain LOG Level by calling
{code:java}
log.listenError();
log.listenDebug();
//etc.
{code}
Or you can subscribe to all logs :
{code:java}
log.listen();
{code}
was (Author: alexey kuznetsov):
[~andrey-kuznetsov] Actually API such as you describe :
user can subscribe either to a certain LOG Level by calling
{code:java}
log.listenError();
log.listenDebug();
//etc.
{code}
Or you can subscribe to all logs :
{code:java}
log.listen();
{code}
> Create lighter version of GridStringLogger
> ------------------------------------------
>
> Key: IGNITE-8570
> URL: https://issues.apache.org/jira/browse/IGNITE-8570
> Project: Ignite
> Issue Type: Improvement
> Affects Versions: 2.4
> Reporter: Andrey Kuznetsov
> Assignee: Alexey Kuznetsov
> Priority: Major
> Fix For: 2.7
>
>
> _+Problem with current GridStringLogger implementation+_:
> Most usages of {{GridStringLogger}} in test assumes the following scenario. First, it is set as a logger for some Ignite node.
> Then, after some activity on that node, log content is searched for some predefined strings.
> {{GridStringLogger}} uses {{StringBuilder}} of bounded size internally to store log contents, older contents gets dropped on exaustion.
> Thus, changes that add more logging may damage some independent tests that use {{GridStringLogger}}.
>
> +_The suggestion for new implementation:_+
> The suggestion is to implement and use another test logger conforming to these requirements:
> * It does not accumulate any logs(actually, it will print no logs to anywhere)
> * It allows to set the listener that fires when log message matches certain regular expression, {{Matcher}} can be passed to the listener
>
> _+Proposed design+_, pseudocode:
> ```
> Class GridRegexpLogger implements IgniteLogger{
> …
> debug(String str){
> if (/* str matches pattern. */)
> \{ /* notify listeners. */ }
> }
> …
> listen("regexp", IgniteInClosure<String> loggerListener)// listener receives message
> { /* registers listener. */ }
> listenDebug("regexp", loggerListener)
> { /* registers listener for debug output only. */ }
> …
> }
> ```
> +_Sample regexp logger usage_+:
> ```
> GridRegexpLogger logger;
> logger.listen(“regexp”, new GridRegexpListener());
> logger.listenDebug("regexp", new GridRegexpListener());
> ```
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)