Skip to content

Commit 265f0e5

Browse files
committed
add FIRPrivateLogDisabled
1 parent 3ec0f6d commit 265f0e5

File tree

3 files changed

+39
-5
lines changed

3 files changed

+39
-5
lines changed

Sources/DataConnect.swift

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import FirebaseAuth
1919
import FirebaseCore
2020
import OSLog
2121

22+
let kFIRPrivateLogDisabledArgument = "-FIRPrivateLogDisabled"
23+
2224
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
2325
public class DataConnect {
2426
private var connectorConfig: ConnectorConfig
@@ -37,7 +39,26 @@ public class DataConnect {
3739
public static let port = 9399
3840
}
3941

40-
public static var logLevel = LogLevel.WARN
42+
class ArgumentFlag {
43+
static var enablePrivacyLogging = true
44+
}
45+
46+
private static let logLevelQueue = DispatchQueue(
47+
label: "com.google.firebase.dataconnect.logLevel",
48+
attributes: .concurrent
49+
)
50+
private static var _logLevel: LogLevel = .WARN
51+
52+
public static var logLevel: LogLevel {
53+
get {
54+
return logLevelQueue.sync { _logLevel }
55+
}
56+
set {
57+
logLevelQueue.async(flags: .barrier) {
58+
_logLevel = newValue
59+
}
60+
}
61+
}
4162

4263
// MARK: Static Creation
4364

@@ -109,6 +130,18 @@ public class DataConnect {
109130
callerSDKType: self.callerSDKType
110131
)
111132
operationsManager = OperationsManager(grpcClient: grpcClient)
133+
134+
LoadArgument()
135+
}
136+
137+
private func LoadArgument() {
138+
let arguments = ProcessInfo.processInfo.arguments
139+
if arguments.contains(kFIRPrivateLogDisabledArgument) {
140+
ArgumentFlag.enablePrivacyLogging = false
141+
DataConnectLogger.debug("DataConnect privacy logging disabled.")
142+
} else {
143+
DataConnectLogger.debug("DataConnect privacy logging enabled.")
144+
}
112145
}
113146

114147
// MARK: Operations

Sources/Internal/GrpcClient.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ actor GrpcClient: CustomStringConvertible {
6363
private lazy var client: FirebaseDataConnectAsyncClient? = {
6464
do {
6565
DataConnectLogger
66-
.debug("GrpcClient \(self.description, privacy: .private) initialization starts.")
66+
.debug("GrpcClient\(self.description, privacy: .private) initialization starts.")
6767
let group = PlatformSupport.makeEventLoopGroup(loopCount: threadPoolSize)
6868
let channel = try GRPCChannelPool.with(
6969
target: .host(serverSettings.host, port: serverSettings.port),
@@ -244,7 +244,8 @@ actor GrpcClient: CustomStringConvertible {
244244
var options = CallOptions(customMetadata: headers)
245245

246246
// Enable GRPC tracing
247-
if DataConnect.logLevel.rawValue <= LogLevel.DEBUG.rawValue {
247+
if DataConnect.logLevel.rawValue <= LogLevel.DEBUG.rawValue,
248+
DataConnect.ArgumentFlag.enablePrivacyLogging == false {
248249
var logger = Logger(label: "com.google.firebase.dataconnect.grpc")
249250
logger.logLevel = .trace
250251
options.logger = logger

Sources/Internal/Logger/DataConnectLogger.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ enum LogPrivacy: Int {
5454
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
5555
extension DefaultStringInterpolation {
5656
mutating func appendInterpolation(_ value: String, privacy: LogPrivacy = .public) {
57-
if privacy == .private, DataConnect.logLevel.rawValue > LogLevel.DEBUG.rawValue {
58-
appendLiteral("<private>")
57+
if privacy == .private, DataConnect.ArgumentFlag.enablePrivacyLogging {
58+
appendLiteral(" <private>")
5959
} else {
6060
appendLiteral(value)
6161
}

0 commit comments

Comments
 (0)