| //===-- LogMessageOsLog.h ---------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LogMessageOsLog_h |
| #define LogMessageOsLog_h |
| |
| #include "DarwinLogInterfaces.h" |
| |
| #include "ActivityStreamSPI.h" |
| #include "LogMessage.h" |
| |
| using ActivityStreamEntry = struct os_activity_stream_entry_s; |
| |
| // ----------------------------------------------------------------------------- |
| /// Provides a unified wrapper around os_log()-style log messages. |
| /// |
| /// The lifetime of this class is intended to be very short. The caller |
| /// must ensure that the passed in ActivityStore and ActivityStreamEntry |
| /// outlive this LogMessageOsLog entry. |
| // ----------------------------------------------------------------------------- |
| |
| class LogMessageOsLog : public LogMessage { |
| public: |
| static void SetFormatterFunction(os_log_copy_formatted_message_t format_func); |
| |
| LogMessageOsLog(const ActivityStore &activity_store, |
| ActivityStreamEntry &entry); |
| |
| // API methods |
| |
| bool HasActivity() const override; |
| |
| const char *GetActivity() const override; |
| |
| std::string GetActivityChain() const override; |
| |
| bool HasCategory() const override; |
| |
| const char *GetCategory() const override; |
| |
| bool HasSubsystem() const override; |
| |
| const char *GetSubsystem() const override; |
| |
| const char *GetMessage() const override; |
| |
| private: |
| const ActivityStore &m_activity_store; |
| ActivityStreamEntry &m_entry; |
| mutable std::string m_message; |
| }; |
| |
| #endif /* LogMessageOsLog_h */ |