[ 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)