[ 
https://issues.apache.org/jira/browse/IGNITE-14897?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrey Mashenkov updated IGNITE-14897:
--------------------------------------
    Description: 
h3. Motivation
For now we use statically initialized loggers in classes. This can leads to 
mess in logs when user starts 2+ nodes in the same JVM and therefore, to harder 
or even impossible debugging.
Ignite-2 is not affected with this, because every node has a separate logger 
instance and can write logs into a separate file.

h3. Description
To resolve this we should use separate logger for each node instance.

Possible solutions
# Avoid static logger usage.
# Use static wrappers for Thread-local loggers.

With the first approach, we have to pass loggers to every component via 
constructor or use dependency injection or create logger manually. Also, we 
should bother about passing correct logger category to the object that may use 
it and logger instance creation rate (if it is created in for every class 
instance)

With the second one, we can use a default single logger instance for user 
threads
and use thread-local like wrappers for Ignite node threads.
Instead of using a ThreadLocal class directly and avoid hash-table lookups, we 
can introduce IgniteThread class with a Logger field.
The logger may either add a node prefix to all messages or delegate calls to 
other logger of certain category (if we want to or will be able to support 
different logger configurations for different nodes).


  was:
h3. Motivation
For now we use statically initialized loggers in classes. This can leads to 
mess in logs when user starts 2+ nodes in the same JVM and therefore, to harder 
or even impossible debugging.
Ignite-2 is not affected with this, because every node has a separate logger 
instance and can write logs into a separate file.

3. Description
To resolve this we should use separate logger for each node instance.

Possible solutions
# Avoid static logger usage.
# Use static wrappers for Thread-local loggers.

With the first approach, we have to pass loggers to every component via 
constructor or use dependency injection or create logger manually. Also, we 
should bother about passing correct logger category to the object that may use 
it and logger instance creation rate (if it is created in for every class 
instance)

With the second one, we can use a default single logger instance for user 
threads
and use thread-local like wrappers for Ignite node threads.
Instead of using a ThreadLocal class directly and avoid hash-table lookups, we 
can introduce IgniteThread class with a Logger field.
The logger may either add a node prefix to all messages or delegate calls to 
other logger of certain category (if we want to or will be able to support 
different logger configurations for different nodes).



> Ignite node logger.
> -------------------
>
>                 Key: IGNITE-14897
>                 URL: https://issues.apache.org/jira/browse/IGNITE-14897
>             Project: Ignite
>          Issue Type: New Feature
>            Reporter: Andrey Mashenkov
>            Priority: Major
>              Labels: ignite-3
>
> h3. Motivation
> For now we use statically initialized loggers in classes. This can leads to 
> mess in logs when user starts 2+ nodes in the same JVM and therefore, to 
> harder or even impossible debugging.
> Ignite-2 is not affected with this, because every node has a separate logger 
> instance and can write logs into a separate file.
> h3. Description
> To resolve this we should use separate logger for each node instance.
> Possible solutions
> # Avoid static logger usage.
> # Use static wrappers for Thread-local loggers.
> With the first approach, we have to pass loggers to every component via 
> constructor or use dependency injection or create logger manually. Also, we 
> should bother about passing correct logger category to the object that may 
> use it and logger instance creation rate (if it is created in for every class 
> instance)
> With the second one, we can use a default single logger instance for user 
> threads
> and use thread-local like wrappers for Ignite node threads.
> Instead of using a ThreadLocal class directly and avoid hash-table lookups, 
> we can introduce IgniteThread class with a Logger field.
> The logger may either add a node prefix to all messages or delegate calls to 
> other logger of certain category (if we want to or will be able to support 
> different logger configurations for different nodes).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to