file_net_log.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
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.
4
5#ifndef NET_TOOLS_GDIG_FILE_NET_LOG_H_
6#define NET_TOOLS_GDIG_FILE_NET_LOG_H_
7
8#include <string>
9
10#include "base/atomic_sequence_num.h"
11#include "base/basictypes.h"
12#include "base/synchronization/lock.h"
13#include "base/time.h"
14#include "net/base/net_log.h"
15
16namespace net {
17
18// FileNetLog is a simple implementation of NetLog that prints out all
19// the events received into the stream passed to the constructor.
20class FileNetLog : public NetLog {
21 public:
22  explicit FileNetLog(FILE* destination, LogLevel level);
23  virtual ~FileNetLog();
24
25 private:
26  // NetLog implementation:
27  virtual void OnAddEntry(const net::NetLog::Entry& entry) OVERRIDE;
28  virtual uint32 NextID() OVERRIDE;
29  virtual LogLevel GetLogLevel() const OVERRIDE;
30  virtual void AddThreadSafeObserver(ThreadSafeObserver* observer,
31                                     LogLevel log_level) OVERRIDE;
32  virtual void SetObserverLogLevel(ThreadSafeObserver* observer,
33                                   LogLevel log_level) OVERRIDE;
34  virtual void RemoveThreadSafeObserver(ThreadSafeObserver* observer) OVERRIDE;
35
36  base::AtomicSequenceNumber sequence_number_;
37  const NetLog::LogLevel log_level_;
38
39  FILE* const destination_;
40  base::Lock lock_;
41
42  base::Time first_event_time_;
43};
44
45}  // namespace net
46
47#endif  // NET_TOOLS_GDIG_FILE_NET_LOG_H_
48