Я писал об этом раньше здесь . Это на самом деле не обязательно читать, чтобы понять текущую статью, но это может помочь сделать ее более краткой, чтобы установить контекст для этой статьи.
Файл: MavenCommands.bat
|
1
2
3
4
|
call mvn archetype:create ^ -DarchetypeGroupId=org.apache.maven.archetypes ^ -DgroupId=org.academy ^ -DartifactId=logger |
Это, к сожалению, предустановлено с помощью JUnit 3. Я установил JUnit 4, а также добавил Contiperf, чтобы я мог запускать тесты несколько раз — что пригодится, если я буду проверять производительность.
Файл: /logger/pom.xml
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
[...] UTF-8 4.10 2.2.0 [...] [...] junit junit ${junit.version} test org.databene contiperf ${contiperf.version} test |
Кроме того, мне нравится явно контролировать версию Java, которая используется для компиляции и выполнения моего кода.
Файл: /logger/pom.xml
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
[...] 2.0.2 1.7 [...] org.apache.maven.plugins maven-compiler-plugin ${maven-compiler-plugin.version} ${java.version} ${java.version} |
Последняя из конфигураций — на данный момент. Шлепни по верному запуску юнит-тестов.
Файл: /logger/pom.xml
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
[...] 2.12 [...] org.apache.maven.plugins maven-surefire-plugin ${maven-surefire-plugin.version} org.apache.maven.surefire surefire-junit47 ${maven-surefire-plugin.version} -XX:-UseSplitVerifier |
Обратите внимание, что я приложил все усилия, чтобы добавить все эти зависимости в эту статью вместе с их версиями, просто чтобы убедиться, что если вы попробуете это сами, вы точно знаете, какова была конфигурация программного обеспечения в моем тесте.
Теперь давайте наконец добавим модульные тесты.
Файл: /logger/src/test/java/org/academy/AppTest.java
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
public class AppTest { private final static Logger logger = LoggerFactory .getLogger(AppTest.class); @Rule public ContiPerfRule i = new ContiPerfRule(); @Test @PerfTest(invocations = 10, threads = 1) @Required(max = 1200, average = 1000) public void test() { for(int i = 0; i<10000 ; i++){ logger.debug("Hello {}", "world."); } } } |
Итак, мы использовали регистратор в моем модульном тесте, но не добавили реализацию регистратора. Что я собираюсь сделать, это добавить log4j (с slf4j) и logback (с присущей ему поддержкой slf4j) один за другим и выполнить этот простой тест несколько раз, чтобы сравнить производительность.
Чтобы добавить log4j, я использовал эту настройку.
Файл: /logger/pom.xml
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
org.slf4j slf4j-api ${slf4j.version} org.slf4j jcl-over-slf4j${slf4j.version} runtime org.slf4j slf4j-log4j12 ${slf4j.version} runtime |
и для входа в систему я использовал эту настройку.
Файл: /logger/pom.xml
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
ch.qos.logback logback-classic${logback.version} |
со следующими версиями.
Файл: /logger/pom.xml
|
1
2
3
4
5
6
|
1.6.1 1.0.6 |
Для того, чтобы любой из этих каркасов регистрации действительно регистрировал что-либо, вам нужно будет добавить файл, сообщающий регистраторам, что регистрировать и где.
Файл: src / main / resources / log4j.properties
|
1
2
3
4
5
6
7
|
# Set root logger level to DEBUG and its only appender to A1.log4j.rootLogger=DEBUG, A1# configure A1 to spit out data in consolelog4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n |
| Фреймворк | 1-й пробег | 2-й пробег | 3-й пробег |
|---|---|---|---|
| Logback | 0,375 секунды | 0,375 секунды | 0,406 секунды |
| Log4j | 0,454 секунды | 0,453 секунды | 0,454 секунды |
Ссылка: повторная запись в журнал от нашего партнера JCG Partho в блоге Tech for Enterprise .
