-
-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Labels
Description
Currently, op-rs embeds a lot of product-specific knowledge. For example, there are several configuration bits that are only relevant to our specific deployment of OPA that are always embedded in the configuration (
operator-rs/crates/stackable-operator/src/product_logging/framework.rs
Lines 755 to 805 in 3548b01
| files_opa_bundle_builder: | |
| type: file | |
| include: | |
| - {STACKABLE_LOG_DIR}/bundle-builder/current | |
| files_opa_json: | |
| type: file | |
| include: | |
| - {STACKABLE_LOG_DIR}/opa/current | |
| transforms: | |
| processed_files_opa_bundle_builder: | |
| inputs: | |
| - files_opa_bundle_builder | |
| type: remap | |
| source: | | |
| parsed_event = parse_regex!(strip_whitespace(strip_ansi_escape_codes(string!(.message))), r'(?P<timestamp>[0-9]{{4}}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T(2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9].[0-9]{{6}}Z)[ ]+(?P<level>\w+)[ ]+(?P<logger>.+):[ ]+(?P<message>.*)') | |
| .timestamp = parse_timestamp!(parsed_event.timestamp, "%Y-%m-%dT%H:%M:%S.%6fZ") | |
| .level = parsed_event.level | |
| .logger = parsed_event.logger | |
| .message = parsed_event.message | |
| processed_files_opa_json: | |
| inputs: | |
| - files_opa_json | |
| type: remap | |
| source: | | |
| parsed_event = parse_json!(string!(.message)) | |
| keys = keys!(parsed_event) | |
| if includes(keys, "timestamp") {{ | |
| .timestamp = parse_timestamp!(parsed_event.timestamp, "%Y-%m-%dT%H:%M:%S.%fZ") | |
| }} else {{ | |
| .timestamp = parse_timestamp!(parsed_event.time, "%Y-%m-%dT%H:%M:%SZ") | |
| }} | |
| if includes(keys, "decision_id") {{ | |
| .logger = "decision" | |
| }} else {{ | |
| .logger = "server" | |
| }} | |
| .level = upcase!(parsed_event.level) | |
| .message = string!(parsed_event.msg) | |
| del(parsed_event.time) | |
| del(parsed_event.timestamp) | |
| del(parsed_event.level) | |
| del(parsed_event.msg) | |
| .message = .message + "\n" + encode_key_value(object!(parsed_event), field_delimiter: "\n") |
It makes sense to offer a few defaults ("this is how we typically configure log4j to behave"), but the final say should be up to the operator and we definitely shouldn't have single-product configurations in the framework crate.