Я писал об этом раньше здесь . Это на самом деле не обязательно читать, чтобы понять текущую статью, но это может помочь сделать ее более краткой, чтобы установить контекст для этой статьи.
Файл: 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 console log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.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 .