1 package com.atlassian.logging.log4j;
2
3 import org.apache.log4j.Level;
4 import org.apache.log4j.Logger;
5 import org.apache.log4j.helpers.PatternConverter;
6 import org.apache.log4j.spi.LoggingEvent;
7 import org.hamcrest.CoreMatchers;
8 import org.junit.Test;
9
10 import static org.junit.Assert.*;
11
12 public class CategoryCollapsingPatternParserTest
13 {
14
15 private static final String FQ_LOGGER_NAME = "com.atlassian.logging.log4j.FQName";
16
17 Logger logger = Logger.getLogger(FQ_LOGGER_NAME);
18
19 private LoggingEvent basicLogEvent = new LoggingEvent(FQ_LOGGER_NAME, logger, System.currentTimeMillis(), Level.ALL, "Some message", null);
20
21 @Test
22 public void test_that_it_consumes_its_pattern_length_strategy() throws Exception
23 {
24
25 PatternConverter converter = createConverter("%Q %m");
26
27
28 StringBuffer sb = new StringBuffer();
29 converter.format(sb, basicLogEvent);
30
31
32 String actual = sb.toString();
33 assertThat(actual, CoreMatchers.equalTo(FQ_LOGGER_NAME));
34
35 }
36
37 @Test
38 public void test_that_it_consumes_its_pattern_segment_strategy() throws Exception
39 {
40
41 PatternConverter converter = createConverter("%q %m");
42
43
44 StringBuffer sb = new StringBuffer();
45 converter.format(sb, basicLogEvent);
46
47
48 String actual = sb.toString();
49 assertThat(actual, CoreMatchers.equalTo(FQ_LOGGER_NAME));
50
51 }
52
53 @Test
54 public void test_it_collapses_to_spec_length_strategy() throws Exception
55 {
56 PatternConverter converter = createConverter("%Q{5} %m");
57
58
59 StringBuffer sb = new StringBuffer();
60 converter.format(sb, basicLogEvent);
61
62
63 String actual = sb.toString();
64 assertThat(actual, CoreMatchers.equalTo("c.a.l.log4j.FQName"));
65 }
66
67 @Test
68 public void test_it_collapses_to_spec_segment_strategy() throws Exception
69 {
70 PatternConverter converter = createConverter("%q{2} %m");
71
72
73 StringBuffer sb = new StringBuffer();
74 converter.format(sb, basicLogEvent);
75
76
77 String actual = sb.toString();
78 assertThat(actual, CoreMatchers.equalTo("c.a.logging.log4j.FQName"));
79 }
80
81 private PatternConverter createConverter(String pattern)
82 {
83 CategoryCollapsingPatternParser parser = new CategoryCollapsingPatternParser(pattern, -1);
84 return parser.parse();
85 }
86 }