// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROMEOS_DEVICE_EVENT_LOG_IMPL_H_ #define CHROMEOS_DEVICE_EVENT_LOG_IMPL_H_ #include #include #include "base/time/time.h" #include "chromeos/chromeos_export.h" #include "chromeos/device_event_log.h" namespace chromeos { namespace device_event_log { class CHROMEOS_EXPORT DeviceEventLogImpl { public: struct LogEntry { LogEntry(const char* filedesc, int file_line, LogType log_type, LogLevel log_level, const std::string& event); std::string file; int file_line; LogType log_type; LogLevel log_level; std::string event; base::Time time; int count; }; explicit DeviceEventLogImpl(size_t max_entries); ~DeviceEventLogImpl(); // Implements device_event_log::AddEntry. void AddEntry(const char* file, int file_line, LogType type, LogLevel level, const std::string& event); // Implements device_event_log::GetAsString. std::string GetAsString(StringOrder order, const std::string& format, const std::string& types, LogLevel max_level, size_t max_events); // Called from device_event_log::AddEntry if the global instance has not been // created (or has already been destroyed). Logs to LOG(ERROR) or VLOG(1). static void SendToVLogOrErrorLog(const char* file, int file_line, LogType type, LogLevel log_level, const std::string& event); private: friend class DeviceEventLogTest; typedef std::list LogEntryList; void AddLogEntry(const LogEntry& entry); // For testing size_t max_entries() const { return max_entries_; } void set_max_entries_for_test(size_t entries) { max_entries_ = entries; } size_t max_entries_; LogEntryList entries_; DISALLOW_COPY_AND_ASSIGN(DeviceEventLogImpl); }; } // namespace device_event_log } // namespace chromeos #endif // CHROMEOS_DEVICE_EVENT_LOG_IMPL_H_