FileLog 및 WinLog 수집기 모두에 대해 KVP(키/값 쌍) 구문 분석기를 구성할 수 있습니다.
KVP(키/값 쌍) 구문 분석기
kvp 구문 분석기는 임의의 로그 메시지 텍스트에서
key=value 일치 항목을 모두 찾아서 추출합니다. 다음 예에서는
kvp 구문 분석기 형식을 보여 줍니다.
[parser|kvp_parser] base_parser=kvp fields=*
예를 들어 키-값 로그는 scope=local; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; 형식일 수 있습니다.
kvp 구문 분석기를 사용할 때는 값을 추출할 필드를 지정해야 합니다. 예를 들어 구성에 정의 fields=name,lastname,country가 있는 경우에는 지정된 키를 가진 값만 구문 분석하여 서버로 보냅니다.
필요한 경우 공백 또는 기타 특수 문자를 정의할 때 키와 값 모두 큰따옴표("")로 묶을 수 있습니다.
키 또는 값에 대해 큰따옴표를 사용할 경우 백슬래시 문자("\")를 이스케이프 문자로 사용할 수 있습니다. 백슬래시 다음에 나오는 모든 문자는 리터럴 방식으로 정의됩니다(큰따옴표 문자 또는 백슬래시 문자 포함). 예: "\\"
다음 고려 사항에 주의하십시오.
- 키/값 쌍의 키 뒤에 등호 기호가 없고
VALUE가 제공되지 않으면 일반 텍스트의 경우처럼 옵션을 건너뜁니다. - 키는 비워 둘 수 없으며 값은 비워 둘 수 있습니다.
- 등호 기호 뒤에 값이 없으면 일반 텍스트로 취급하여 건너뜁니다.
- 값은 큰따옴표 문자로 묶인 문자열이거나 비어 있을 수 있습니다. 값에 특수 문자가 포함된 경우 백슬래시를 사용하여 이스케이프합니다.
KVP 구문 분석기 옵션
kvp 구문 분석기의 구조에 대해 다음 정보를 참조하십시오.
| 옵션 | 설명 |
|---|---|
fields |
추출하려는 정보이며 데이터 단위로 정의됩니다. 예를 들면 특정 필드 이름이
|
delimiter |
선택 사항입니다. 기본 구분 기호는 공백 문자, 탭, 줄 바꿈 문자, 쉼표 및 세미콜론 문자입니다. 구성에 구분 기호가 지정되지 않은 경우 기본 구분 기호를 특정 구분 기호로 변경하려면 해당 구분 기호를 큰따옴표로 묶어야 합니다. 예를 들면 예를 들어 |
field_decoder |
중첩된 구문 분석기는 JSON 문자열로 지정됩니다. 이 문자열의 키는 중첩된 구문 분석기에 적용할 필드의 이름이고, 값은 해당 필드에 사용할 구문 분석기의 이름입니다. 중첩된 구문 분석기 각각은 기본 구문 분석기가 디코딩한 적절한 필드에 적용됩니다. 필드 디코더는 키-값 쌍의 값이 타임 스탬프 또는 쉼표로 구분된 목록과 같은 복잡한 값일 때 유용합니다. |
debug = |
선택 사항입니다. 옵션을 |
추가적인 키 값 옵션
| 키 | 정의 |
|---|---|
KVP_MESSAGE = *(MESSAGE_ENTRY [WSPR]) |
선택적인 공백으로 구분된 메시지 항목의 목록입니다. |
MESSAGE_ENTRY = KVP / FREE_TEXT |
항목은 키/값 쌍이거나 일반 텍스트입니다. |
KVP = KEY ["=" VALUE] |
키/값 쌍입니다. KEY 다음에 등호와 VALUE가 나오지 않으면 일반 텍스트처럼 건너뜁니다. |
KEY = BARE_KEY / QUOTED_KEY |
|
FREE_TEXT = "=" |
단독으로 나오는 등호는 일반 텍스트로 간주되어 건너뜁니다. |
BARE_KEY = *1BARE_KEY_CHAR |
적어도 한 문자 이상입니다. |
BARE_KEY_CHAR = %0x00-08 / %0x10-19 / %0x21-3C / %3E-%FF |
등호, 공백 또는 탭을 제외한 모든 문자입니다. |
QUOTED_KEY = 0x22 *1(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
큰따옴표 문자로 묶은 하나 이상의 문자입니다. 백슬래시를 이스케이프 문자로 사용합니다. |
QUOTED_STRING_CHAR = %0x00-21 / %0x23-FF |
큰따옴표를 제외한 모든 문자입니다. |
VALUE = BARE_VALUE / QUOTED_VALUE |
|
BARE_VALUE = *BARE_VALUE_CHAR |
0개 이상의 문자입니다. |
BARE_VALUE_CHAR = %0x00-08 / %0x10-19 / %0x21-FF |
공백 또는 탭을 제외한 모든 문자입니다. |
QUOTED_VALUE = 0x22 *(QUOTED_STRING_CHAR / "\" CHAR) 0x22 |
큰따옴표 문자로 묶은 문자열입니다. 이 값은 비워 둘 수 있습니다. 백슬래시를 이스케이프 문자로 사용합니다. |
KVP 구문 분석기 구성 예
필요한 경우 fields=*를 사용하여 모든 필드를 구문 분석할 수 있습니다.
[parser|simple_kvp] base_parser =kvp fields=*
이 예에서는 필드 디코더를 지정하는 방법을 보여 줍니다.
[parser|mykvp]
debug=no
base_parser=kvp
delimiter="#^|"
fields=*
;OR fields=scope,abstract,lazyInit,autowireMode,dependencyCheck
field_decoder={"field1":"field1_parser1"}
[parser|field1_parser1]
base_parser=clf
format=[%{value1}i]]
field_decoder={"value1":"field_parser2"}
다음 KVP 로그를 구문 분석하려면:
Configuring transport... proto = cfapi server_hostname = LOCALHOST ssl = no port = 9000 reconnect = 30
[parser|kvp_log_parser] base_parser=kvp fields=*KVP 구문 분석기가 다음 필드를 반환합니다.
proto=cfapi server_hostname=LOCALHOST ssl=no port=9000 reconnect=30
=) 앞에 임의로 생성된 키가 있는 경우, KVP 구문 분석기가 다수의 임의 필드를 생성하여 UI 및 쿼리 성능 문제가 발생할 수 있으므로 KVP 구문 분석기를
* 옵션과 함께 사용하지 않는 것이 좋습니다. 대신 구문 분석해야 하는 필드를 지정하여 구문 분석기를 사용할 수 있습니다.
단순한 KVP 구문 분석기 및 복잡한 KVP 구문 분석기의 예
단순한 KVP 구문 분석기 예
[filelog|MyLog] directory=C:\<folder_name>\Parser_logs include=*.log parser=my_KVP_parser [parser|my_KVP_parser] base_parser=kvp fields=*
복잡한 KVP 구문 분석기 예
[filelog|MyLog]
directory=C:\<folder_name>\Parser_logs
include=*.log
parser=my_KVP_parser
[parser|my_KVP_parser]
base_parser=kvp
fields=*
field_decoder={"field1":" field1_parser1"}
[parser| field1_parser1]
base_parser=clf
format=[%{value1}i]]
field_decoder={"value1":" field1_parser2"}