2
0

GRPCLogger.swift 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /*
  2. * Copyright 2021, gRPC Authors All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. import Logging
  17. import NIO
  18. /// Wraps `Logger` to always provide the source as "GRPC".
  19. ///
  20. /// See https://github.com/apple/swift-log/issues/145 for rationale.
  21. @usableFromInline
  22. internal struct GRPCLogger {
  23. private var logger: Logger
  24. internal var unwrapped: Logger {
  25. return self.logger
  26. }
  27. internal init(wrapping logger: Logger) {
  28. self.logger = logger
  29. }
  30. internal subscript(metadataKey metadataKey: String) -> Logger.Metadata.Value? {
  31. get {
  32. return self.logger[metadataKey: metadataKey]
  33. }
  34. set {
  35. self.logger[metadataKey: metadataKey] = newValue
  36. }
  37. }
  38. internal func trace(
  39. _ message: @autoclosure () -> Logger.Message,
  40. metadata: @autoclosure () -> Logger.Metadata? = nil,
  41. file: String = #file,
  42. function: String = #function,
  43. line: UInt = #line
  44. ) {
  45. self.logger.trace(
  46. message(),
  47. metadata: metadata(),
  48. source: "GRPC",
  49. file: file,
  50. function: function,
  51. line: line
  52. )
  53. }
  54. internal func debug(
  55. _ message: @autoclosure () -> Logger.Message,
  56. metadata: @autoclosure () -> Logger.Metadata? = nil,
  57. file: String = #file,
  58. function: String = #function,
  59. line: UInt = #line
  60. ) {
  61. self.logger.debug(
  62. message(),
  63. metadata: metadata(),
  64. source: "GRPC",
  65. file: file,
  66. function: function,
  67. line: line
  68. )
  69. }
  70. internal func notice(
  71. _ message: @autoclosure () -> Logger.Message,
  72. metadata: @autoclosure () -> Logger.Metadata? = nil,
  73. file: String = #file,
  74. function: String = #function,
  75. line: UInt = #line
  76. ) {
  77. self.logger.notice(
  78. message(),
  79. metadata: metadata(),
  80. source: "GRPC",
  81. file: file,
  82. function: function,
  83. line: line
  84. )
  85. }
  86. internal func warning(
  87. _ message: @autoclosure () -> Logger.Message,
  88. metadata: @autoclosure () -> Logger.Metadata? = nil,
  89. file: String = #file,
  90. function: String = #function,
  91. line: UInt = #line
  92. ) {
  93. self.logger.warning(
  94. message(),
  95. metadata: metadata(),
  96. source: "GRPC",
  97. file: file,
  98. function: function,
  99. line: line
  100. )
  101. }
  102. }
  103. extension GRPCLogger {
  104. internal mutating func addIPAddressMetadata(local: SocketAddress?, remote: SocketAddress?) {
  105. self.logger.addIPAddressMetadata(local: local, remote: remote)
  106. }
  107. }
  108. extension Logger {
  109. internal var wrapped: GRPCLogger {
  110. return GRPCLogger(wrapping: self)
  111. }
  112. }