Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Swift/Collection.swift
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,7 @@ public final class Collection: CollectionChangeObservable, Indexable, Equatable,
{
let token = impl.addDocumentChangeListener(withID: id, queue: queue) { [weak self] change in
guard let self = self else {
Log.log(domain: .database, level: .warning, message: "Unable to notify changes as the collection object was released")
Log._log(domain: .database, level: .warning, message: "Unable to notify changes as the collection object was released")
return
}
listener(DocumentChange(documentID: change.documentID,
Expand Down
5 changes: 3 additions & 2 deletions Swift/Log.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@
import Foundation
import CouchbaseLiteSwift_Private

internal class Log {
public final class Log {
/// Writes a log message to all the enabled log sinks.
internal static func log(domain: LogDomain, level: LogLevel, message: String) {
/// - Note: `Unsupported API` Internal used for testing purpose.
static func _log(domain: LogDomain, level: LogLevel, message: String) {
let cDomain = CBLLogDomain.init(rawValue: domain.rawValue)
let cLevel = CBLLogLevel(rawValue: UInt(level.rawValue))!
CBLLog.writeSwiftLog(cDomain, level: cLevel, message: message)
Expand Down
66 changes: 33 additions & 33 deletions Swift/Tests/LogSinkTest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -70,21 +70,21 @@ class LogSinkTest: CBLTestCase {
func writeOneKiloByteOfLog() {
let message = "11223344556677889900" // 44Byte line
for _ in 0..<23 { // 1012 Bytes
Log.log(domain: .database, level: .error, message: "\(message)")
Log.log(domain: .database, level: .warning, message: "\(message)")
Log.log(domain: .database, level: .info, message: "\(message)")
Log.log(domain: .database, level: .verbose, message: "\(message)")
Log.log(domain: .database, level: .debug, message: "\(message)")
Log._log(domain: .database, level: .error, message: "\(message)")
Log._log(domain: .database, level: .warning, message: "\(message)")
Log._log(domain: .database, level: .info, message: "\(message)")
Log._log(domain: .database, level: .verbose, message: "\(message)")
Log._log(domain: .database, level: .debug, message: "\(message)")
}
writeAllLogs("1") // ~25Bytes
}

func writeAllLogs(_ message: String) {
Log.log(domain: .database, level: .error, message: message)
Log.log(domain: .database, level: .warning, message: message)
Log.log(domain: .database, level: .info, message: message)
Log.log(domain: .database, level: .verbose, message: message)
Log.log(domain: .database, level: .debug, message: message)
Log._log(domain: .database, level: .error, message: message)
Log._log(domain: .database, level: .warning, message: message)
Log._log(domain: .database, level: .info, message: message)
Log._log(domain: .database, level: .verbose, message: message)
Log._log(domain: .database, level: .debug, message: message)
}

func isKeywordPresentInAnyLog(_ keyword: String, path: String) throws -> Bool {
Expand Down Expand Up @@ -126,10 +126,10 @@ class LogSinkTest: CBLTestCase {
for i in (1...5).reversed() {
let level = LogLevel(rawValue: UInt8(i))!
LogSinks.file = FileLogSink(level: level, directory: logFileDirectory, usePlainText: true)
Log.log(domain: .database, level: .verbose, message: "TEST VERBOSE")
Log.log(domain: .database, level: .info, message: "TEST INFO")
Log.log(domain: .database, level: .warning, message: "TEST WARNING")
Log.log(domain: .database, level: .error, message: "TEST ERROR")
Log._log(domain: .database, level: .verbose, message: "TEST VERBOSE")
Log._log(domain: .database, level: .info, message: "TEST INFO")
Log._log(domain: .database, level: .warning, message: "TEST WARNING")
Log._log(domain: .database, level: .error, message: "TEST ERROR")
}

let files = try FileManager.default.contentsOfDirectory(atPath: logFileDirectory)
Expand Down Expand Up @@ -158,7 +158,7 @@ class LogSinkTest: CBLTestCase {
func testFileLogSinkBinaryFormat() throws {
LogSinks.file = FileLogSink(level: .info, directory: logFileDirectory, usePlainText: false)

Log.log(domain: .database, level: .info, message: "TEST INFO")
Log._log(domain: .database, level: .info, message: "TEST INFO")

let files = try getLogsInDirectory(logFileDirectory,
properties: [.contentModificationDateKey],
Expand Down Expand Up @@ -193,7 +193,7 @@ class LogSinkTest: CBLTestCase {
LogSinks.file = FileLogSink(level: .info, directory: logFileDirectory, usePlainText: true)

let inputString = "SOME TEST INFO"
Log.log(domain: .database, level: .info, message: inputString)
Log._log(domain: .database, level: .info, message: inputString)

let files = try getLogsInDirectory(logFileDirectory,
properties: [.contentModificationDateKey],
Expand Down Expand Up @@ -338,31 +338,31 @@ class LogSinkTest: CBLTestCase {
func testEnableDisableCustomLogSink() throws {
var logSink = TestCustomLogSink()
LogSinks.custom = CustomLogSink(level: .verbose, logSink: logSink)
Log.log(domain: .database, level: .verbose, message: "TEST VERBOSE")
Log.log(domain: .database, level: .info, message: "TEST INFO")
Log.log(domain: .database, level: .warning, message: "TEST WARNING")
Log.log(domain: .database, level: .error, message: "TEST ERROR")
Log._log(domain: .database, level: .verbose, message: "TEST VERBOSE")
Log._log(domain: .database, level: .info, message: "TEST INFO")
Log._log(domain: .database, level: .warning, message: "TEST WARNING")
Log._log(domain: .database, level: .error, message: "TEST ERROR")
XCTAssertEqual(logSink.lines.count, 4)

logSink = TestCustomLogSink()
LogSinks.custom = CustomLogSink(level: .none, logSink: logSink)
Log.log(domain: .database, level: .verbose, message: "TEST VERBOSE")
Log.log(domain: .database, level: .info, message: "TEST INFO")
Log.log(domain: .database, level: .warning, message: "TEST WARNING")
Log.log(domain: .database, level: .error, message: "TEST ERROR")
Log._log(domain: .database, level: .verbose, message: "TEST VERBOSE")
Log._log(domain: .database, level: .info, message: "TEST INFO")
Log._log(domain: .database, level: .warning, message: "TEST WARNING")
Log._log(domain: .database, level: .error, message: "TEST ERROR")
XCTAssertEqual(logSink.lines.count, 0)
}

func testCustomLogSinkLevels() throws {
Log.log(domain: .database, level: .info, message: "IGNORE")
Log._log(domain: .database, level: .info, message: "IGNORE")
for i in (1...5).reversed() {
let level = LogLevel(rawValue: UInt8(i))!
let logSink = TestCustomLogSink()
LogSinks.custom = CustomLogSink(level: level, logSink: logSink)
Log.log(domain: .database, level: .verbose, message: "TEST VERBOSE")
Log.log(domain: .database, level: .info, message: "TEST INFO")
Log.log(domain: .database, level: .warning, message: "TEST WARNING")
Log.log(domain: .database, level: .error, message: "TEST ERROR")
Log._log(domain: .database, level: .verbose, message: "TEST VERBOSE")
Log._log(domain: .database, level: .info, message: "TEST INFO")
Log._log(domain: .database, level: .warning, message: "TEST WARNING")
Log._log(domain: .database, level: .error, message: "TEST ERROR")
XCTAssertEqual(logSink.lines.count, 5 - i)
}
}
Expand All @@ -376,7 +376,7 @@ class LogSinkTest: CBLTestCase {
let logSink = TestCustomLogSink()
LogSinks.custom = CustomLogSink(level: .debug, domains: domains[i], logSink: logSink)
for j in 0..<domains.count {
Log.log(domain: LogDomain(rawValue: domains[j].rawValue)!, level: .verbose, message: names[j])
Log._log(domain: LogDomain(rawValue: domains[j].rawValue)!, level: .verbose, message: names[j])
}
XCTAssertEqual(logSink.lines.count, 1)
XCTAssertEqual(logSink.lines[0], names[i])
Expand All @@ -392,7 +392,7 @@ class LogSinkTest: CBLTestCase {
let logSink = TestCustomLogSink()
LogSinks.custom = CustomLogSink(level: .debug, domains: combined, logSink: logSink)
for j in 0..<domains.count {
Log.log(domain: LogDomain(rawValue: domains[j].rawValue)!, level: .verbose, message: names[j])
Log._log(domain: LogDomain(rawValue: domains[j].rawValue)!, level: .verbose, message: names[j])
}

XCTAssertEqual(logSink.lines.count, i + 1)
Expand All @@ -405,7 +405,7 @@ class LogSinkTest: CBLTestCase {
let logSink = TestCustomLogSink()
LogSinks.custom = CustomLogSink(level: .debug, domains: .all, logSink: logSink)
for i in 0..<domains.count {
Log.log(domain: LogDomain(rawValue: domains[i].rawValue)!, level: .verbose, message: names[i])
Log._log(domain: LogDomain(rawValue: domains[i].rawValue)!, level: .verbose, message: names[i])
}
XCTAssertEqual(logSink.lines.count, names.count)
for i in 0..<names.count {
Expand All @@ -416,7 +416,7 @@ class LogSinkTest: CBLTestCase {
func testPercentEscape() throws {
let logSink = TestCustomLogSink()
LogSinks.custom = CustomLogSink(level: .info, logSink: logSink)
Log.log(domain: .database, level: .info, message: "Hello %s there")
Log._log(domain: .database, level: .info, message: "Hello %s there")
var found: Bool = false
for line in logSink.lines {
if line.contains("Hello %s there") {
Expand Down