master
yaml 90 lines 1.86 KB
Raw
1 pattern: "(?P<timestamp>\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})\\s+\\[(?P<level>\\w+)\\]\\s+(?P<component>\\w+):\\s+(?P<message>.*)"
2
3 # Test complex rewrite pipeline with multiple stages
4
5 inject:
6 - key: HOSTNAME
7 value: "${HOSTNAME:-localhost}"
8 - key: APPLICATION
9 value: "log2journal-test"
10
11 rename:
12 - old_key: LEVEL
13 new_key: LOG_LEVEL
14 - old_key: COMPONENT
15 new_key: MODULE
16 - old_key: MESSAGE
17 new_key: MSG
18
19 rewrite:
20 # Stage 1: Normalize log levels
21 - key: LOG_LEVEL
22 match: "(?i)(warn|warning)"
23 value: "WARNING"
24 stop: no
25
26 - key: LOG_LEVEL
27 match: "(?i)(err|error)"
28 value: "ERROR"
29 stop: no
30
31 - key: LOG_LEVEL
32 match: "(?i)(info|information)"
33 value: "INFO"
34 stop: yes
35
36 # Stage 2: Extract additional fields from message
37 - key: MSG
38 match: "user\\s+(\\w+)\\s+from\\s+(\\d+\\.\\d+\\.\\d+\\.\\d+)"
39 value: "${0}"
40 stop: no
41
42 - key: USERNAME
43 match: "user\\s+(\\w+)\\s+from"
44 value: "${1}"
45 inject: yes
46 stop: no
47
48 - key: CLIENT_IP
49 match: "from\\s+(\\d+\\.\\d+\\.\\d+\\.\\d+)"
50 value: "${1}"
51 inject: yes
52
53 # Stage 3: Add severity scores
54 - key: SEVERITY
55 match: ".*"
56 value: "0"
57 inject: yes
58 stop: no
59
60 - key: SEVERITY
61 match: "${LOG_LEVEL}"
62 value: "3"
63 stop: no
64
65 - key: SEVERITY
66 match: "WARNING"
67 value: "4"
68 stop: no
69
70 - key: SEVERITY
71 match: "ERROR|CRITICAL"
72 value: "5"
73 stop: yes
74
75 # Stage 4: Create formatted message
76 - key: FORMATTED_MSG
77 value: "[${TIMESTAMP}] ${HOSTNAME}/${APPLICATION}/${MODULE} (${LOG_LEVEL}): ${MSG}"
78 inject: yes
79
80 filter:
81 include: "LOG_LEVEL|MODULE|MSG|FORMATTED_MSG|USERNAME|CLIENT_IP|SEVERITY"
82 exclude: "TIMESTAMP|MESSAGE|COMPONENT|LEVEL"
83
84 unmatched:
85 key: PARSE_ERROR
86 inject:
87 - key: ERROR_TYPE
88 value: "INVALID_LOG_FORMAT"
89 - key: RAW_LINE
90 value: "${LINE}"