1 // Copyright 2019 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 #ifndef BASE_TRACE_EVENT_LOG_MESSAGE_H_ 6 #define BASE_TRACE_EVENT_LOG_MESSAGE_H_ 7 8 #include <stddef.h> 9 10 #include <string> 11 #include <string_view> 12 13 #include "base/base_export.h" 14 #include "base/compiler_specific.h" 15 #include "base/trace_event/trace_event_impl.h" 16 17 namespace base { 18 19 namespace trace_event { 20 21 class BASE_EXPORT LogMessage : public ConvertableToTraceFormat { 22 public: 23 LogMessage(const char* file, std::string_view message, int line); 24 LogMessage(const LogMessage&) = delete; 25 LogMessage& operator=(const LogMessage&) = delete; 26 ~LogMessage() override; 27 28 // ConvertableToTraceFormat class implementation. 29 void AppendAsTraceFormat(std::string* out) const override; 30 bool AppendToProto(ProtoAppender* appender) const override; 31 32 void EstimateTraceMemoryOverhead(TraceEventMemoryOverhead* overhead) override; 33 file()34 const char* file() const { return file_; } message()35 const std::string& message() const LIFETIME_BOUND { return message_; } line_number()36 int line_number() const { return line_number_; } 37 38 private: 39 const char* file_; 40 std::string message_; 41 int line_number_; 42 }; 43 44 } // namespace trace_event 45 } // namespace base 46 47 #endif // BASE_TRACE_EVENT_LOG_MESSAGE_H_ 48