You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by bc...@apache.org on 2019/04/12 19:59:29 UTC

[trafficserver] branch 8.1.x updated: TCL: Remove TCL dependency from proxy/logging

This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch 8.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/8.1.x by this push:
     new 806a222  TCL: Remove TCL dependency from proxy/logging
806a222 is described below

commit 806a2224c37b9a362c32a8433e85168146f67de1
Author: Xavier Chi <ch...@gmail.com>
AuthorDate: Tue Oct 16 15:05:10 2018 -0500

    TCL: Remove TCL dependency from proxy/logging
    
    (cherry picked from commit a76cf148e8a70fad76b8712a6a2750da9cd528a1)
    
     Conflicts:
    	proxy/logging/Log.h
---
 proxy/logging/Log.cc      | 190 ++++++++++++++++++++++------------------------
 proxy/logging/Log.h       |   7 +-
 proxy/logging/LogField.cc |   9 +--
 3 files changed, 99 insertions(+), 107 deletions(-)

diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc
index 6549ea9..2cda5f9 100644
--- a/proxy/logging/Log.cc
+++ b/proxy/logging/Log.cc
@@ -83,7 +83,7 @@ bool Log::logging_mode_changed        = false;
 uint32_t Log::periodic_tasks_interval = PERIODIC_TASKS_INTERVAL_FALLBACK;
 
 // Hash table for LogField symbols
-InkHashTable *Log::field_symbol_hash = nullptr;
+std::unordered_map<std::string, LogField *> Log::field_symbol_hash;
 
 RecRawStatBlock *log_rsb;
 
@@ -330,189 +330,183 @@ Log::init_fields()
   // name in a rapid manner.
   LogField::init_milestone_container();
 
-  //
-  // Create a hash table that will be used to find the global field
-  // objects from their symbol names in a rapid manner.
-  //
-  field_symbol_hash = ink_hash_table_create(InkHashTableKeyType_String);
-
   // client -> proxy fields
   field = new LogField("client_host_ip", "chi", LogField::IP, &LogAccess::marshal_client_host_ip, &LogAccess::unmarshal_ip_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "chi", field);
+  field_symbol_hash.emplace("chi", field);
 
   field =
     new LogField("client_host_port", "chp", LogField::sINT, &LogAccess::marshal_client_host_port, &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "chp", field);
+  field_symbol_hash.emplace("chp", field);
 
   field =
     new LogField("client_host_ip_hex", "chih", LogField::IP, &LogAccess::marshal_client_host_ip, &LogAccess::unmarshal_ip_to_hex);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "chih", field);
+  field_symbol_hash.emplace("chih", field);
 
   // interface ip
 
   field =
     new LogField("host_interface_ip", "hii", LogField::IP, &LogAccess::marshal_host_interface_ip, &LogAccess::unmarshal_ip_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "hii", field);
+  field_symbol_hash.emplace("hii", field);
 
   field = new LogField("host_interface_ip_hex", "hiih", LogField::IP, &LogAccess::marshal_host_interface_ip,
                        &LogAccess::unmarshal_ip_to_hex);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "hiih", field);
+  field_symbol_hash.emplace("hiih", field);
   // interface ip end
   field = new LogField("client_auth_user_name", "caun", LogField::STRING, &LogAccess::marshal_client_auth_user_name,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "caun", field);
+  field_symbol_hash.emplace("caun", field);
 
   field = new LogField("plugin_identity_id", "piid", LogField::sINT, &LogAccess::marshal_plugin_identity_id,
                        reinterpret_cast<LogField::UnmarshalFunc>(&LogAccess::unmarshal_int_to_str));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "piid", field);
+  field_symbol_hash.emplace("piid", field);
 
   field = new LogField("plugin_identity_tag", "pitag", LogField::STRING, &LogAccess::marshal_plugin_identity_tag,
                        reinterpret_cast<LogField::UnmarshalFunc>(&LogAccess::unmarshal_str));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pitag", field);
+  field_symbol_hash.emplace("pitag", field);
 
   field = new LogField("client_req_timestamp_sec", "cqts", LogField::sINT, &LogAccess::marshal_client_req_timestamp_sec,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqts", field);
+  field_symbol_hash.emplace("cqts", field);
 
   field = new LogField("client_req_timestamp_hex_sec", "cqth", LogField::sINT, &LogAccess::marshal_client_req_timestamp_sec,
                        &LogAccess::unmarshal_int_to_str_hex);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqth", field);
+  field_symbol_hash.emplace("cqth", field);
 
   field = new LogField("client_req_timestamp_squid", "cqtq", LogField::sINT, &LogAccess::marshal_client_req_timestamp_ms,
                        &LogAccess::unmarshal_ttmsf);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqtq", field);
+  field_symbol_hash.emplace("cqtq", field);
 
   field = new LogField("client_req_timestamp_netscape", "cqtn", LogField::sINT, &LogAccess::marshal_client_req_timestamp_sec,
                        &LogAccess::unmarshal_int_to_netscape_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqtn", field);
+  field_symbol_hash.emplace("cqtn", field);
 
   field = new LogField("client_req_timestamp_date", "cqtd", LogField::sINT, &LogAccess::marshal_client_req_timestamp_sec,
                        &LogAccess::unmarshal_int_to_date_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqtd", field);
+  field_symbol_hash.emplace("cqtd", field);
 
   field = new LogField("client_req_timestamp_time", "cqtt", LogField::sINT, &LogAccess::marshal_client_req_timestamp_sec,
                        &LogAccess::unmarshal_int_to_time_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqtt", field);
+  field_symbol_hash.emplace("cqtt", field);
 
   field = new LogField("client_req_text", "cqtx", LogField::STRING, &LogAccess::marshal_client_req_text,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_http_text);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqtx", field);
+  field_symbol_hash.emplace("cqtx", field);
 
   field = new LogField("client_req_http_method", "cqhm", LogField::STRING, &LogAccess::marshal_client_req_http_method,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqhm", field);
+  field_symbol_hash.emplace("cqhm", field);
 
   field = new LogField("client_req_url", "cqu", LogField::STRING, &LogAccess::marshal_client_req_url,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str, &LogAccess::set_client_req_url);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqu", field);
+  field_symbol_hash.emplace("cqu", field);
 
   field = new LogField("client_req_url_canonical", "cquc", LogField::STRING, &LogAccess::marshal_client_req_url_canon,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str, &LogAccess::set_client_req_url_canon);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cquc", field);
+  field_symbol_hash.emplace("cquc", field);
 
   field =
     new LogField("client_req_unmapped_url_canonical", "cquuc", LogField::STRING, &LogAccess::marshal_client_req_unmapped_url_canon,
                  (LogField::UnmarshalFunc)&LogAccess::unmarshal_str, &LogAccess::set_client_req_unmapped_url_canon);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cquuc", field);
+  field_symbol_hash.emplace("cquuc", field);
 
   field = new LogField("client_req_unmapped_url_path", "cquup", LogField::STRING, &LogAccess::marshal_client_req_unmapped_url_path,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str, &LogAccess::set_client_req_unmapped_url_path);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cquup", field);
+  field_symbol_hash.emplace("cquup", field);
 
   field = new LogField("client_req_unmapped_url_host", "cquuh", LogField::STRING, &LogAccess::marshal_client_req_unmapped_url_host,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str, &LogAccess::set_client_req_unmapped_url_host);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cquuh", field);
+  field_symbol_hash.emplace("cquuh", field);
 
   field = new LogField("client_req_url_scheme", "cqus", LogField::STRING, &LogAccess::marshal_client_req_url_scheme,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqus", field);
+  field_symbol_hash.emplace("cqus", field);
 
   field = new LogField("client_req_url_path", "cqup", LogField::STRING, &LogAccess::marshal_client_req_url_path,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str, &LogAccess::set_client_req_url_path);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqup", field);
+  field_symbol_hash.emplace("cqup", field);
 
   field = new LogField("client_req_http_version", "cqhv", LogField::dINT, &LogAccess::marshal_client_req_http_version,
                        &LogAccess::unmarshal_http_version);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqhv", field);
+  field_symbol_hash.emplace("cqhv", field);
 
   field = new LogField("client_req_protocol_version", "cqpv", LogField::dINT, &LogAccess::marshal_client_req_protocol_version,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqpv", field);
+  field_symbol_hash.emplace("cqpv", field);
 
   field = new LogField("client_req_header_len", "cqhl", LogField::sINT, &LogAccess::marshal_client_req_header_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqhl", field);
+  field_symbol_hash.emplace("cqhl", field);
 
   field = new LogField("client_req_squid_len", "cqql", LogField::sINT, &LogAccess::marshal_client_req_squid_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqql", field);
+  field_symbol_hash.emplace("cqql", field);
 
   field = new LogField("cache_lookup_url_canonical", "cluc", LogField::STRING, &LogAccess::marshal_cache_lookup_url_canon,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cluc", field);
+  field_symbol_hash.emplace("cluc", field);
 
   field = new LogField("process_uuid", "puuid", LogField::STRING, &LogAccess::marshal_process_uuid,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "puuid", field);
+  field_symbol_hash.emplace("puuid", field);
 
   field = new LogField("client_req_content_len", "cqcl", LogField::sINT, &LogAccess::marshal_client_req_content_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqcl", field);
+  field_symbol_hash.emplace("cqcl", field);
 
   field = new LogField("client_req_tcp_reused", "cqtr", LogField::dINT, &LogAccess::marshal_client_req_tcp_reused,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqtr", field);
+  field_symbol_hash.emplace("cqtr", field);
 
   field = new LogField("client_req_is_ssl", "cqssl", LogField::dINT, &LogAccess::marshal_client_req_is_ssl,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqssl", field);
+  field_symbol_hash.emplace("cqssl", field);
 
   field = new LogField("client_req_ssl_reused", "cqssr", LogField::dINT, &LogAccess::marshal_client_req_ssl_reused,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqssr", field);
+  field_symbol_hash.emplace("cqssr", field);
 
   field = new LogField("client_sec_protocol", "cqssv", LogField::STRING, &LogAccess::marshal_client_security_protocol,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqssv", field);
+  field_symbol_hash.emplace("cqssv", field);
 
   field = new LogField("client_cipher_suite", "cqssc", LogField::STRING, &LogAccess::marshal_client_security_cipher_suite,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cqssc", field);
+  field_symbol_hash.emplace("cqssc", field);
 
   Ptr<LogFieldAliasTable> finish_status_map = make_ptr(new LogFieldAliasTable);
   finish_status_map->init(N_LOG_FINISH_CODE_TYPES, LOG_FINISH_FIN, "FIN", LOG_FINISH_INTR, "INTR", LOG_FINISH_TIMEOUT, "TIMEOUT");
@@ -520,68 +514,68 @@ Log::init_fields()
   field = new LogField("client_finish_status_code", "cfsc", LogField::sINT, &LogAccess::marshal_client_finish_status_code,
                        &LogAccess::unmarshal_finish_status, make_alias_map(finish_status_map));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cfsc", field);
+  field_symbol_hash.emplace("cfsc", field);
 
   field =
     new LogField("client_req_id", "crid", LogField::sINT, &LogAccess::marshal_client_req_id, &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "crid", field);
+  field_symbol_hash.emplace("crid", field);
 
   field = new LogField("client_req_uuid", "cruuid", LogField::STRING, &LogAccess::marshal_client_req_uuid,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cruuid", field);
+  field_symbol_hash.emplace("cruuid", field);
 
   field = new LogField("client_rx_error_code", "crec", LogField::STRING, &LogAccess::marshal_client_rx_error_code,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "crec", field);
+  field_symbol_hash.emplace("crec", field);
 
   field = new LogField("client_tx_error_code", "ctec", LogField::STRING, &LogAccess::marshal_client_tx_error_code,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "ctec", field);
+  field_symbol_hash.emplace("ctec", field);
 
   // proxy -> client fields
   field = new LogField("proxy_resp_content_type", "psct", LogField::STRING, &LogAccess::marshal_proxy_resp_content_type,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "psct", field);
+  field_symbol_hash.emplace("psct", field);
 
   field = new LogField("proxy_resp_reason_phrase", "prrp", LogField::STRING, &LogAccess::marshal_proxy_resp_reason_phrase,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "prrp", field);
+  field_symbol_hash.emplace("prrp", field);
 
   field = new LogField("proxy_resp_squid_len", "psql", LogField::sINT, &LogAccess::marshal_proxy_resp_squid_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "psql", field);
+  field_symbol_hash.emplace("psql", field);
 
   field = new LogField("proxy_resp_content_len", "pscl", LogField::sINT, &LogAccess::marshal_proxy_resp_content_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pscl", field);
+  field_symbol_hash.emplace("pscl", field);
 
   field = new LogField("proxy_resp_content_len_hex", "psch", LogField::sINT, &LogAccess::marshal_proxy_resp_content_len,
                        &LogAccess::unmarshal_int_to_str_hex);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "psch", field);
+  field_symbol_hash.emplace("psch", field);
 
   field = new LogField("proxy_resp_status_code", "pssc", LogField::sINT, &LogAccess::marshal_proxy_resp_status_code,
                        &LogAccess::unmarshal_http_status);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pssc", field);
+  field_symbol_hash.emplace("pssc", field);
 
   field = new LogField("proxy_resp_header_len", "pshl", LogField::sINT, &LogAccess::marshal_proxy_resp_header_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pshl", field);
+  field_symbol_hash.emplace("pshl", field);
 
   field = new LogField("proxy_finish_status_code", "pfsc", LogField::sINT, &LogAccess::marshal_proxy_finish_status_code,
                        &LogAccess::unmarshal_finish_status, make_alias_map(finish_status_map));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pfsc", field);
+  field_symbol_hash.emplace("pfsc", field);
 
   Ptr<LogFieldAliasTable> cache_code_map = make_ptr(new LogFieldAliasTable);
   cache_code_map->init(
@@ -626,52 +620,52 @@ Log::init_fields()
   field = new LogField("cache_result_code", "crc", LogField::sINT, &LogAccess::marshal_cache_result_code,
                        &LogAccess::unmarshal_cache_code, make_alias_map(cache_code_map));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "crc", field);
+  field_symbol_hash.emplace("crc", field);
 
   // Reuse the unmarshalling code from crc
   field = new LogField("cache_result_subcode", "crsc", LogField::sINT, &LogAccess::marshal_cache_result_subcode,
                        &LogAccess::unmarshal_cache_code, make_alias_map(cache_subcode_map));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "crsc", field);
+  field_symbol_hash.emplace("crsc", field);
 
   field = new LogField("cache_hit_miss", "chm", LogField::sINT, &LogAccess::marshal_cache_hit_miss,
                        &LogAccess::unmarshal_cache_hit_miss, make_alias_map(cache_hit_miss_map));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "chm", field);
+  field_symbol_hash.emplace("chm", field);
 
   // proxy -> server fields
   field = new LogField("proxy_req_header_len", "pqhl", LogField::sINT, &LogAccess::marshal_proxy_req_header_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pqhl", field);
+  field_symbol_hash.emplace("pqhl", field);
 
   field = new LogField("proxy_req_squid_len", "pqql", LogField::sINT, &LogAccess::marshal_proxy_req_squid_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pqql", field);
+  field_symbol_hash.emplace("pqql", field);
 
   field = new LogField("proxy_req_content_len", "pqcl", LogField::sINT, &LogAccess::marshal_proxy_req_content_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pqcl", field);
+  field_symbol_hash.emplace("pqcl", field);
 
   field = new LogField("proxy_req_server_ip", "pqsi", LogField::IP, &LogAccess::marshal_proxy_req_server_ip,
                        &LogAccess::unmarshal_ip_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pqsi", field);
+  field_symbol_hash.emplace("pqsi", field);
 
   field = new LogField("proxy_req_server_port", "pqsp", LogField::sINT, &LogAccess::marshal_proxy_req_server_port,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pqsp", field);
+  field_symbol_hash.emplace("pqsp", field);
 
   field = new LogField("next_hop_ip", "nhi", LogField::IP, &LogAccess::marshal_next_hop_ip, &LogAccess::unmarshal_ip_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "nhi", field);
+  field_symbol_hash.emplace("nhi", field);
 
   field = new LogField("next_hop_port", "nhp", LogField::IP, &LogAccess::marshal_next_hop_port, &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "nhp", field);
+  field_symbol_hash.emplace("nhp", field);
 
   Ptr<LogFieldAliasTable> hierarchy_map = make_ptr(new LogFieldAliasTable);
   hierarchy_map->init(
@@ -696,122 +690,122 @@ Log::init_fields()
   field = new LogField("proxy_hierarchy_route", "phr", LogField::sINT, &LogAccess::marshal_proxy_hierarchy_route,
                        &LogAccess::unmarshal_hierarchy, make_alias_map(hierarchy_map));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "phr", field);
+  field_symbol_hash.emplace("phr", field);
 
   field = new LogField("proxy_host_name", "phn", LogField::STRING, &LogAccess::marshal_proxy_host_name,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "phn", field);
+  field_symbol_hash.emplace("phn", field);
 
   field = new LogField("proxy_host_ip", "phi", LogField::IP, &LogAccess::marshal_proxy_host_ip, &LogAccess::unmarshal_ip_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "phi", field);
+  field_symbol_hash.emplace("phi", field);
 
   field =
     new LogField("proxy_host_port", "php", LogField::sINT, &LogAccess::marshal_proxy_host_port, &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "php", field);
+  field_symbol_hash.emplace("php", field);
 
   field = new LogField("proxy_req_is_ssl", "pqssl", LogField::sINT, &LogAccess::marshal_proxy_req_is_ssl,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "pqssl", field);
+  field_symbol_hash.emplace("pqssl", field);
 
   // server -> proxy fields
   field = new LogField("server_host_ip", "shi", LogField::IP, &LogAccess::marshal_server_host_ip, &LogAccess::unmarshal_ip_to_str);
 
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "shi", field);
+  field_symbol_hash.emplace("shi", field);
 
   field = new LogField("server_host_name", "shn", LogField::STRING, &LogAccess::marshal_server_host_name,
                        (LogField::UnmarshalFunc)&LogAccess::unmarshal_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "shn", field);
+  field_symbol_hash.emplace("shn", field);
 
   field = new LogField("server_resp_status_code", "sssc", LogField::sINT, &LogAccess::marshal_server_resp_status_code,
                        &LogAccess::unmarshal_http_status);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "sssc", field);
+  field_symbol_hash.emplace("sssc", field);
 
   field = new LogField("server_resp_content_len", "sscl", LogField::sINT, &LogAccess::marshal_server_resp_content_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "sscl", field);
+  field_symbol_hash.emplace("sscl", field);
 
   field = new LogField("server_resp_header_len", "sshl", LogField::sINT, &LogAccess::marshal_server_resp_header_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "sshl", field);
+  field_symbol_hash.emplace("sshl", field);
 
   field = new LogField("server_resp_squid_len", "ssql", LogField::sINT, &LogAccess::marshal_server_resp_squid_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "ssql", field);
+  field_symbol_hash.emplace("ssql", field);
 
   field = new LogField("server_resp_http_version", "sshv", LogField::dINT, &LogAccess::marshal_server_resp_http_version,
                        &LogAccess::unmarshal_http_version);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "sshv", field);
+  field_symbol_hash.emplace("sshv", field);
 
   field = new LogField("server_resp_time", "stms", LogField::sINT, &LogAccess::marshal_server_resp_time_ms,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "stms", field);
+  field_symbol_hash.emplace("stms", field);
 
   field = new LogField("server_resp_time_hex", "stmsh", LogField::sINT, &LogAccess::marshal_server_resp_time_ms,
                        &LogAccess::unmarshal_int_to_str_hex);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "stmsh", field);
+  field_symbol_hash.emplace("stmsh", field);
 
   field = new LogField("server_resp_time_fractional", "stmsf", LogField::sINT, &LogAccess::marshal_server_resp_time_ms,
                        &LogAccess::unmarshal_ttmsf);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "stmsf", field);
+  field_symbol_hash.emplace("stmsf", field);
 
   field = new LogField("server_resp_time_sec", "sts", LogField::sINT, &LogAccess::marshal_server_resp_time_s,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "sts", field);
+  field_symbol_hash.emplace("sts", field);
 
   field = new LogField("server_transact_count", "sstc", LogField::sINT, &LogAccess::marshal_server_transact_count,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "sstc", field);
+  field_symbol_hash.emplace("sstc", field);
 
   field = new LogField("server_connect_attempts", "sca", LogField::sINT, &LogAccess::marshal_server_connect_attempts,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "sca", field);
+  field_symbol_hash.emplace("sca", field);
 
   field = new LogField("cached_resp_status_code", "csssc", LogField::sINT, &LogAccess::marshal_cache_resp_status_code,
                        &LogAccess::unmarshal_http_status);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "csssc", field);
+  field_symbol_hash.emplace("csssc", field);
 
   field = new LogField("cached_resp_content_len", "csscl", LogField::sINT, &LogAccess::marshal_cache_resp_content_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "csscl", field);
+  field_symbol_hash.emplace("csscl", field);
 
   field = new LogField("cached_resp_header_len", "csshl", LogField::sINT, &LogAccess::marshal_cache_resp_header_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "csshl", field);
+  field_symbol_hash.emplace("csshl", field);
 
   field = new LogField("cached_resp_squid_len", "cssql", LogField::sINT, &LogAccess::marshal_cache_resp_squid_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cssql", field);
+  field_symbol_hash.emplace("cssql", field);
 
   field = new LogField("cached_resp_http_version", "csshv", LogField::dINT, &LogAccess::marshal_cache_resp_http_version,
                        &LogAccess::unmarshal_http_version);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "csshv", field);
+  field_symbol_hash.emplace("csshv", field);
 
   field = new LogField("client_retry_after_time", "crat", LogField::sINT, &LogAccess::marshal_client_retry_after_time,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "crat", field);
+  field_symbol_hash.emplace("crat", field);
 
   // cache write fields
 
@@ -821,48 +815,48 @@ Log::init_fields()
   field = new LogField("cache_write_result", "cwr", LogField::sINT, &LogAccess::marshal_cache_write_code,
                        &LogAccess::unmarshal_cache_write_code, make_alias_map(cache_write_code_map));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cwr", field);
+  field_symbol_hash.emplace("cwr", field);
 
   field = new LogField("cache_write_transform_result", "cwtr", LogField::sINT, &LogAccess::marshal_cache_write_transform_code,
                        &LogAccess::unmarshal_cache_write_code, make_alias_map(cache_write_code_map));
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "cwtr", field);
+  field_symbol_hash.emplace("cwtr", field);
 
   // other fields
 
   field = new LogField("transfer_time_ms", "ttms", LogField::sINT, &LogAccess::marshal_transfer_time_ms,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "ttms", field);
+  field_symbol_hash.emplace("ttms", field);
 
   field = new LogField("transfer_time_ms_hex", "ttmh", LogField::sINT, &LogAccess::marshal_transfer_time_ms,
                        &LogAccess::unmarshal_int_to_str_hex);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "ttmh", field);
+  field_symbol_hash.emplace("ttmh", field);
 
   field = new LogField("transfer_time_ms_fractional", "ttmsf", LogField::sINT, &LogAccess::marshal_transfer_time_ms,
                        &LogAccess::unmarshal_ttmsf);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "ttmsf", field);
+  field_symbol_hash.emplace("ttmsf", field);
 
   field =
     new LogField("transfer_time_sec", "tts", LogField::sINT, &LogAccess::marshal_transfer_time_s, &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "tts", field);
+  field_symbol_hash.emplace("tts", field);
 
   field = new LogField("file_size", "fsiz", LogField::sINT, &LogAccess::marshal_file_size, &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "fsiz", field);
+  field_symbol_hash.emplace("fsiz", field);
 
   field = new LogField("client_connection_id", "ccid", LogField::sINT, &LogAccess::marshal_client_http_connection_id,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "ccid", field);
+  field_symbol_hash.emplace("ccid", field);
 
   field = new LogField("client_transaction_id", "ctid", LogField::sINT, &LogAccess::marshal_client_http_transaction_id,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
-  ink_hash_table_insert(field_symbol_hash, "ctid", field);
+  field_symbol_hash.emplace("ctid", field);
 
   init_status |= FIELDS_INITIALIZED;
 }
diff --git a/proxy/logging/Log.h b/proxy/logging/Log.h
index 94a3a8f..f132bbc 100644
--- a/proxy/logging/Log.h
+++ b/proxy/logging/Log.h
@@ -54,12 +54,13 @@
 #include <cstdarg>
 #include "tscore/ink_platform.h"
 #include "tscore/EventNotify.h"
-#include "tscore/ink_hash_table.h"
 #include "tscore/Regression.h"
 #include "records/P_RecProcess.h"
 #include "LogFile.h"
 #include "LogBuffer.h"
 
+#include <unordered_map>
+
 class LogAccess;
 class LogFieldList;
 class LogFilterList;
@@ -190,9 +191,7 @@ public:
   inkcoreapi static LogObject *error_log;
   static LogConfig *config;
   static LogFieldList global_field_list;
-  //    static LogBufferList global_buffer_full_list; vl: not used
-  //    static LogBufferList global_buffer_delete_list; vl: not used
-  static InkHashTable *field_symbol_hash;
+  static std::unordered_map<std::string, LogField *> field_symbol_hash;
   static LogFormat *global_scrap_format;
   static LogObject *global_scrap_object;
   static LoggingMode logging_mode;
diff --git a/proxy/logging/LogField.cc b/proxy/logging/LogField.cc
index 8e63f81..3bf2ed0 100644
--- a/proxy/logging/LogField.cc
+++ b/proxy/logging/LogField.cc
@@ -750,11 +750,10 @@ LogFieldList::find_by_symbol(const char *symbol) const
 {
   LogField *field = nullptr;
 
-  if (Log::field_symbol_hash) {
-    if (ink_hash_table_lookup(Log::field_symbol_hash, (char *)symbol, (InkHashTableValue *)&field) && field) {
-      Debug("log-field-hash", "Field %s found", field->symbol());
-      return field;
-    }
+  if (auto it = Log::field_symbol_hash.find(symbol); it != Log::field_symbol_hash.end() && it->second) {
+    field = it->second;
+    Debug("log-field-hash", "Field %s found", field->symbol());
+    return field;
   }
   // trusty old method