11use crate :: log_settings:: LogSettings ;
22use crate :: time:: try_convert_timestamp_to_readable;
33use handlebars:: Handlebars ;
4+ use indexmap:: IndexMap ;
45use serde_json:: { Map , Value } ;
56use std:: borrow:: ToOwned ;
67use std:: collections:: BTreeMap ;
@@ -58,8 +59,8 @@ pub fn print_log_line(
5859 }
5960}
6061
61- fn flatten_json ( log_entry : & Map < String , Value > , prefix : & str ) -> BTreeMap < String , String > {
62- let mut flattened_json: BTreeMap < String , String > = BTreeMap :: new ( ) ;
62+ fn flatten_json ( log_entry : & Map < String , Value > , prefix : & str ) -> IndexMap < String , String > {
63+ let mut flattened_json: IndexMap < String , String > = IndexMap :: new ( ) ;
6364 for ( key, value) in log_entry {
6465 match value {
6566 Value :: String ( string_value) => {
@@ -97,7 +98,7 @@ fn flatten_json(log_entry: &Map<String, Value>, prefix: &str) -> BTreeMap<String
9798 flattened_json
9899}
99100
100- fn flatten_array ( key : & str , prefix : & str , array_values : & [ Value ] , flattened_json : & mut BTreeMap < String , String > ) {
101+ fn flatten_array ( key : & str , prefix : & str , array_values : & [ Value ] , flattened_json : & mut IndexMap < String , String > ) {
101102 for ( index, array_value) in array_values. iter ( ) . enumerate ( ) {
102103 let key = format ! ( "{}[{}]" , key, index + 1 ) ; // lua tables indexes start with 1
103104
@@ -113,17 +114,17 @@ fn flatten_array(key: &str, prefix: &str, array_values: &[Value], flattened_json
113114 }
114115}
115116
116- fn get_string_value ( value : & BTreeMap < String , String > , keys : & [ String ] ) -> Option < String > {
117+ fn get_string_value ( value : & IndexMap < String , String > , keys : & [ String ] ) -> Option < String > {
117118 keys
118119 . iter ( )
119120 . fold ( None :: < String > , |maybe_match, key| maybe_match. or_else ( || value. get ( key) . map ( ToOwned :: to_owned) ) )
120121}
121122
122- fn get_string_value_or_default ( value : & BTreeMap < String , String > , keys : & [ String ] , default : & str ) -> String {
123+ fn get_string_value_or_default ( value : & IndexMap < String , String > , keys : & [ String ] , default : & str ) -> String {
123124 get_string_value ( value, keys) . unwrap_or_else ( || default. to_string ( ) )
124125}
125126
126- fn write_additional_values ( out : & mut dyn Write , log_entry : & BTreeMap < String , String > , additional_values : & [ String ] , handlebars : & Handlebars < ' static > ) {
127+ fn write_additional_values ( out : & mut dyn Write , log_entry : & IndexMap < String , String > , additional_values : & [ String ] , handlebars : & Handlebars < ' static > ) {
127128 for additional_value_prefix in additional_values {
128129 for additional_value in log_entry
129130 . keys ( )
0 commit comments