-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathNSLog.swift
43 lines (38 loc) · 1.63 KB
/
NSLog.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
import CoreFoundation
#if os(OSX) || os(iOS)
internal let kCFLogLevelEmergency = CFLogLevel.emergency
internal let kCFLogLevelAlert = CFLogLevel.alert
internal let kCFLogLevelCritical = CFLogLevel.critical
internal let kCFLogLevelError = CFLogLevel.error
internal let kCFLogLevelWarning = CFLogLevel.warning
internal let kCFLogLevelNotice = CFLogLevel.notice
internal let kCFLogLevelInfo = CFLogLevel.info
internal let kCFLogLevelDebug = CFLogLevel.debug
#endif
/* Output from NSLogv is serialized, in that only one thread in a process can be doing
* the writing/logging described above at a time. All attempts at writing/logging a
* message complete before the next thread can begin its attempts. The format specification
* allowed by these functions is that which is understood by NSString's formatting capabilities.
* CFLog1() uses writev/fprintf to write to stderr. Both these functions ensure atomic writes.
*/
public func NSLogv(_ format: String, _ args: CVaListPointer) {
let message = NSString(format: format, arguments: args)
#if os(OSX) || os(iOS)
CFLog1(kCFLogLevelWarning, message._cfObject)
#else
CFLog1(Int32(kCFLogLevelWarning), message._cfObject)
#endif
}
public func NSLog(_ format: String, _ args: CVarArg...) {
withVaList(args) {
NSLogv(format, $0)
}
}