1// Copyright 2012 The Chromium Authors 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/apple/osstatus_logging.h" 6 7#import <Foundation/Foundation.h> 8 9#include <iomanip> 10 11#include "base/immediate_crash.h" 12 13namespace logging { 14 15std::string DescriptionFromOSStatus(OSStatus err) { 16 NSError* error = [NSError errorWithDomain:NSOSStatusErrorDomain 17 code:err 18 userInfo:nil]; 19 return error.description.UTF8String; 20} 21 22OSStatusLogMessage::OSStatusLogMessage(const char* file_path, 23 int line, 24 LogSeverity severity, 25 OSStatus status) 26 : LogMessage(file_path, line, severity), status_(status) {} 27 28OSStatusLogMessage::~OSStatusLogMessage() { 29 AppendError(); 30} 31 32void OSStatusLogMessage::AppendError() { 33 stream() << ": " << DescriptionFromOSStatus(status_) << " (" << status_ 34 << ")"; 35} 36 37OSStatusLogMessageFatal::~OSStatusLogMessageFatal() { 38 AppendError(); 39 Flush(); 40 base::ImmediateCrash(); 41} 42 43} // namespace logging 44