Skip to content

Commit 42ab485

Browse files
authored
HowToUseLoggers.md (#332)
Create HowToUseLoggers.md
1 parent ca23ba7 commit 42ab485

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

HowToUseLoggers.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# How to use loggers in UTBotJava
2+
3+
If you develop different modules of our project like CE, CLI or else, you might need to use loggers or even add your own ones to UTBot.
4+
<br/> Let\`s see how you can work with it. 🙂
5+
6+
🟢**1. Find out where appropriate log4j2.xml configuration file is**
7+
8+
It depends on two factors:
9+
10+
- Find the project you will run. For instance, for Idea plugin it is **_utbot-intellij_** subproject
11+
- Chose appropriate log4j2.xml. If you are going to run tests for framework, it\`s in the test folder of utbot-framework subproject.
12+
13+
The file is usually in the resource folder.
14+
<br/>
15+
<br/>
16+
<br/>
17+
🟢**2. Find out the logger name**
18+
19+
The easiest way is:
20+
21+
- Go in the code that you are going to debug. Let’s assume it is a method in com.home.utbot.framework.plugin.api.UtBotTestCaseGenerator.
22+
- Find out if there is a KotlinLogging object that is used to create a **logger**
23+
- If such a logger exists, use the fully qualified class name as the logger name in the next steps
24+
<br/>
25+
26+
🟢**3. Add logger**
27+
28+
Open log4j2.xml and add the logger in the loggers section like this
29+
30+
```
31+
<Logger name=" com.home.utbot.framework.plugin.api.UtBotTestCaseGenerator " level="info">
32+
<AppenderRef ref="Console"/>
33+
</Logger>
34+
```
35+
<br/>
36+
<br/>
37+
38+
🟢**4. Logger level**
39+
40+
Depending on the desired amount of information, change the **level** attribute. If you do not see output in the console, the wrong level value could be the reason. The **trace** is most verbose level.
41+
<br/>
42+
<br/>
43+
44+
🟢**5. Output**
45+
46+
Sometimes the logging information could be printed in a wrong destination. In that case, change the AppenderRef tag. It can be used with Console value or some other value (for instance, FrameworkAppender)
47+
<br/>
48+
<br/>
49+
50+
🟢**6. Message format**
51+
52+
If you do not like the format for logging output, you can change it in PatternLayout tag (see log4j2.xml in utbot-framework/src/test/resources/)
53+
<br/>
54+
<br/>
55+
56+
🟢**7. Multiple loggers**
57+
58+
Sometimes it is handy to add an extra logger to a Kotlin class in order to log different functionality independently.
59+
60+
The primary logger is usually defined as
61+
62+
`private val logger = KotlinLogging.logger {} `
63+
64+
65+
You may add an extra logger
66+
67+
`private val timeoutLogger = KotlinLogging.logger(logger.name + ".timeout") `
68+
69+
70+
Having this logger, you can use it in code with different log levels in parallel with the primary logger.
71+
<br/>
72+
<br/>
73+
74+
🟢**7.1 To enable the logger**
75+
76+
1. Go to the file you are currently working on
77+
2. Select the file in the project tab (alt-f1)
78+
3. Find the closest log4j2.xml file (usually it is located in the resources file), enable the logger with a desirable log level
79+
80+
81+
`<Logger name="com.huawei.utbot.engine.UtBotSymbolicEngine.timeout" level="debug"/>`
82+
83+

0 commit comments

Comments
 (0)