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