1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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,
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<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_
|