diff options
author | stevenjb <stevenjb@chromium.org> | 2014-12-05 13:35:35 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-05 21:36:03 +0000 |
commit | 252993533a1b5cb7bcec6ab058f1d62144ca999e (patch) | |
tree | e88451521bce2f6b2a16e1d7f567caf065bc6323 /chromeos/device_event_log_impl.h | |
parent | 014cb2211155eadda438f241708a2ca07ab31970 (diff) | |
download | chromium_src-252993533a1b5cb7bcec6ab058f1d62144ca999e.zip chromium_src-252993533a1b5cb7bcec6ab058f1d62144ca999e.tar.gz chromium_src-252993533a1b5cb7bcec6ab058f1d62144ca999e.tar.bz2 |
Generalize network_event_log -> device_event_log
This CL:
* Moves network_event_log.cc -> device_event_log_impl.cc
* Defines macros and initialization code in device_event_log.h
* Modifies network_event_log.h to use device_event_log instead.
* Converts PowerManagerClient logging to use POWER_LOG as an immediately useful example.
* Adds the non-network log entries to a 'device_log' entry in chrome://system and feedback reports.
BUG=293739
Review URL: https://codereview.chromium.org/773703002
Cr-Commit-Position: refs/heads/master@{#307086}
Diffstat (limited to 'chromeos/device_event_log_impl.h')
-rw-r--r-- | chromeos/device_event_log_impl.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/chromeos/device_event_log_impl.h b/chromeos/device_event_log_impl.h new file mode 100644 index 0000000..f053571 --- /dev/null +++ b/chromeos/device_event_log_impl.h @@ -0,0 +1,83 @@ +// 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 <list> +#include <string> + +#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, + LogType log_type, + 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<LogEntry> 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_ |