#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

log_format  main  '$remote_addr - remote_user="$remote_user" [$time_local] request_method="$request_method" '
                  'request_uri="$request_uri" request_protocol="$server_protocol" '
                  'status=$status bbs=$body_bytes_sent rl=$request_length rt=$request_time hr="$http_referer" '
                  'ua="$http_user_agent" xfwdf="$http_x_forwarded_for"';


log_format  platform  '$remote_addr - remote_user="$remote_user" [$time_local] request_method="$request_method" '
                      'request_uri="$request_uri" request_protocol="$server_protocol" '
                      'status=$status bbs=$body_bytes_sent rl=$request_length rt=$request_time hr="$http_referer" '
                      'ua="$http_user_agent" xfwdf="$http_x_forwarded_for" '
                      'upadd="$upstream_addr" upstat=$upstream_status uprt=$upstream_response_time '
                      'tenantId="$tenant" tenantNamespace="$tenantNamespace" tenantInstance="$tenantInstance" '
                      'requestHeaders="$requestHeaders" requestBody="$requestBody" responseHeaders="$responseHeaders" responseBody="$responseBody" '
                      'apiId="$apiId" apiKey="$apiKey" analyticsUri="$analyticsUri" reqid="$requestId"';
