Files
hummingbird-docc/Sources/HummingbirdDocC/Internal/Extensions/LoggerMetadata+Helpers.swift
T
javier 0e71b2673c Update license to Apache v2.0 (#6)
This PR contains the work done to update the project to use the *Apache  v2.0* license.

Reviewed-on: #6
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
2025-10-07 23:35:55 +00:00

53 lines
1.9 KiB
Swift

// ===----------------------------------------------------------------------===
//
// This source file is part of the Hummingbird DocC open source project
//
// Copyright (c) 2025 Röck+Cöde VoF. and the Hummingbird DocC project authors
// Licensed under Apache license v2.0
//
// See LICENSE for license information
// See CONTRIBUTORS for the list of Hummingbird DocC project authors
//
// SPDX-License-Identifier: Apache-2.0
//
// ===----------------------------------------------------------------------===
import protocol Hummingbird.RequestContext
import struct Hummingbird.HTTPResponse
import struct Hummingbird.Request
import struct Logging.Logger
extension Logger.Metadata {
// MARK: Functions
/// Generates a dictionary to use as metadata for events to log into the logging system.
/// - Parameters:
/// - context: A type that contains all the parameters associated with a given request, and that conforms to the `RequestContext` protocol.
/// - request: A type that contains all the parameters to process as a request.
/// - statusCode: A representation of a response status to provide as a response.
/// - redirect: A URI path to use in a redirection event, if any.
/// - Returns: A generated metadata dictionary for an event to log into the logging system.
static func metadata(
context: any RequestContext,
request: Request,
statusCode: HTTPResponse.Status,
redirect: String? = nil
) -> Self {
var metadata: Logger.Metadata = [
"hb.request.id": "\(context.id)",
"hb.request.method": "\(request.method.rawValue)",
"hb.request.path": "\(request.uri.path)",
"hb.request.status": "\(statusCode.code)"
]
if let redirect {
metadata["hb.request.redirect"] = "\(redirect)"
}
return metadata
}
}