blob: 36501983ea271568b1d29bda1e46a52b8902c062 [file] [log] [blame]
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
@_exported import os
@_exported import os.log
import _SwiftOSOverlayShims
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
public func os_log(
_ message: StaticString,
dso: UnsafeRawPointer? = #dsohandle,
log: OSLog = .default,
type: OSLogType = .default,
_ args: CVarArg...)
{
guard log.isEnabled(type: type) else { return }
let ra = _swift_os_log_return_address()
message.withUTF8Buffer { (buf: UnsafeBufferPointer<UInt8>) in
// Since dladdr is in libc, it is safe to unsafeBitCast
// the cstring argument type.
buf.baseAddress!.withMemoryRebound(
to: CChar.self, capacity: buf.count
) { str in
withVaList(args) { valist in
_swift_os_log(dso, ra, log, type, str, valist)
}
}
}
}
extension OSLogType {
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
public static let `default` = __OS_LOG_TYPE_DEFAULT
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
public static let info = __OS_LOG_TYPE_INFO
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
public static let debug = __OS_LOG_TYPE_DEBUG
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
public static let error = __OS_LOG_TYPE_ERROR
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
public static let fault = __OS_LOG_TYPE_FAULT
}
extension OSLog {
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
public static let disabled = _swift_os_log_disabled()
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
public static let `default` = _swift_os_log_default()
@available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
public convenience init(subsystem: String, category: String) {
self.init(__subsystem: subsystem, category: category)
}
}
@available(*, unavailable, renamed: "OSLogType.default")
public var OS_LOG_TYPE_DEFAULT: OSLogType {
fatalError()
}
@available(*, unavailable, renamed: "OSLogType.info")
public var OS_LOG_TYPE_INFO: OSLogType {
fatalError()
}
@available(*, unavailable, renamed: "OSLogType.debug")
public var OS_LOG_TYPE_DEBUG: OSLogType {
fatalError()
}
@available(*, unavailable, renamed: "OSLogType.error")
public var OS_LOG_TYPE_ERROR: OSLogType {
fatalError()
}
@available(*, unavailable, renamed: "OSLogType.fault")
public var OS_LOG_TYPE_FAULT: OSLogType {
fatalError()
}