/*
 *
 * Copyright 2020 gRPC authors.
 *
 * Licensed 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.
 *
 */

// Package grpclog provides logging functionality for internal gRPC packages, // outside of the functionality provided by the external `grpclog` package.
package grpclog import ( ) // PrefixLogger does logging with a prefix. // // Logging method on a nil logs without any prefix. type PrefixLogger struct { logger grpclog.DepthLoggerV2 prefix string } // Infof does info logging. func ( *PrefixLogger) ( string, ...any) { if != nil { // Handle nil, so the tests can pass in a nil logger. = .prefix + .logger.InfoDepth(1, fmt.Sprintf(, ...)) return } grpclog.InfoDepth(1, fmt.Sprintf(, ...)) } // Warningf does warning logging. func ( *PrefixLogger) ( string, ...any) { if != nil { = .prefix + .logger.WarningDepth(1, fmt.Sprintf(, ...)) return } grpclog.WarningDepth(1, fmt.Sprintf(, ...)) } // Errorf does error logging. func ( *PrefixLogger) ( string, ...any) { if != nil { = .prefix + .logger.ErrorDepth(1, fmt.Sprintf(, ...)) return } grpclog.ErrorDepth(1, fmt.Sprintf(, ...)) } // V reports whether verbosity level l is at least the requested verbose level. func ( *PrefixLogger) ( int) bool { if != nil { return .logger.V() } return true } // NewPrefixLogger creates a prefix logger with the given prefix. func ( grpclog.DepthLoggerV2, string) *PrefixLogger { return &PrefixLogger{logger: , prefix: } }