Refactor SharedMemory::Create and fix a rare file leak.
[chromium-blink-merge.git] / chrome / browser / drive / event_logger.cc
blob69c8541d705ba94027aba5764797006bffd8de4a
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/drive/event_logger.h"
7 #include "base/logging.h"
8 #include "base/strings/stringprintf.h"
10 namespace drive {
12 EventLogger::Event::Event(
13 int id, logging::LogSeverity severity, const std::string& what)
14 : id(id),
15 severity(severity),
16 when(base::Time::Now()),
17 what(what) {
20 EventLogger::EventLogger()
21 : history_size_(kDefaultHistorySize),
22 next_event_id_(0) {
25 EventLogger::~EventLogger() {
28 void EventLogger::LogRawString(logging::LogSeverity severity,
29 const std::string& what) {
30 base::AutoLock auto_lock(lock_);
31 history_.push_back(Event(next_event_id_, severity, what));
32 ++next_event_id_;
33 if (history_.size() > history_size_)
34 history_.pop_front();
37 void EventLogger::Log(logging::LogSeverity severity, const char* format, ...) {
38 std::string what;
40 va_list args;
41 va_start(args, format);
42 base::StringAppendV(&what, format, args);
43 va_end(args);
45 DVLOG(1) << what;
46 LogRawString(severity, what);
49 void EventLogger::SetHistorySize(size_t history_size) {
50 base::AutoLock auto_lock(lock_);
51 history_.clear();
52 history_size_ = history_size;
55 std::vector<EventLogger::Event> EventLogger::GetHistory() {
56 base::AutoLock auto_lock(lock_);
57 std::vector<Event> output;
58 output.assign(history_.begin(), history_.end());
59 return output;
63 } // namespace drive