OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license | |
5 * that can be found in the LICENSE file in the root of the source | |
6 * tree. An additional intellectual property rights grant can be found | |
7 * in the file PATENTS. All contributing project authors may | |
8 * be found in the AUTHORS file in the root of the source tree. | |
9 * | |
10 * System independent wrapper for logging runtime information to file. | |
11 * Note: All log messages will be written to the same trace file. | |
12 * Note: If too many messages are written to file there will be a build up of | |
13 * messages. Apply filtering to avoid that. | |
14 */ | |
15 | |
16 #ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_ | |
17 #define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_ | |
18 | |
19 #include "webrtc/common_types.h" | |
20 #include "webrtc/typedefs.h" | |
21 | |
22 namespace webrtc { | |
23 | |
24 #if defined(WEBRTC_RESTRICT_LOGGING) | |
25 // Disable all TRACE macros. The LOG macro is still functional. | |
26 #define WEBRTC_TRACE true ? (void) 0 : Trace::Add | |
27 #else | |
28 #define WEBRTC_TRACE Trace::Add | |
29 #endif | |
30 | |
31 class Trace { | |
32 public: | |
33 // The length of the trace text preceeding the log message. | |
34 static const int kBoilerplateLength; | |
35 // The position of the timestamp text within a trace. | |
36 static const int kTimestampPosition; | |
37 // The length of the timestamp (without "delta" field). | |
38 static const int kTimestampLength; | |
39 | |
40 // Increments the reference count to the trace. | |
41 static void CreateTrace(); | |
42 // Decrements the reference count to the trace. | |
43 static void ReturnTrace(); | |
44 // Note: any instance that writes to the trace file should increment and | |
45 // decrement the reference count on construction and destruction, | |
46 // respectively. | |
47 | |
48 // Specifies what type of messages should be written to the trace file. The | |
49 // filter parameter is a bitmask where each message type is enumerated by the | |
50 // TraceLevel enumerator. TODO(hellner): why is the TraceLevel enumerator not | |
51 // defined in this file? | |
52 static void set_level_filter(int filter); | |
53 | |
54 // Returns what type of messages are written to the trace file. | |
55 static int level_filter(); | |
56 | |
57 // Sets the file name. If add_file_counter is false the same file will be | |
58 // reused when it fills up. If it's true a new file with incremented name | |
59 // will be used. | |
60 static int32_t SetTraceFile(const char* file_name, | |
61 const bool add_file_counter = false); | |
62 | |
63 // Returns the name of the file that the trace is currently writing to. | |
64 static int32_t TraceFile(char file_name[1024]); | |
65 | |
66 // Registers callback to receive trace messages. | |
67 // TODO(hellner): Why not use OutStream instead? Why is TraceCallback not | |
68 // defined in this file? | |
69 static int32_t SetTraceCallback(TraceCallback* callback); | |
70 | |
71 // Adds a trace message for writing to file. The message is put in a queue | |
72 // for writing to file whenever possible for performance reasons. I.e. there | |
73 // is a crash it is possible that the last, vital logs are not logged yet. | |
74 // level is the type of message to log. If that type of messages is | |
75 // filtered it will not be written to file. module is an identifier for what | |
76 // part of the code the message is coming. | |
77 // id is an identifier that should be unique for that set of classes that | |
78 // are associated (e.g. all instances owned by an engine). | |
79 // msg and the ellipsis are the same as e.g. sprintf. | |
80 // TODO(hellner) Why is TraceModule not defined in this file? | |
81 static void Add(const TraceLevel level, | |
82 const TraceModule module, | |
83 const int32_t id, | |
84 const char* msg, ...); | |
85 | |
86 private: | |
87 static volatile int level_filter_; | |
88 }; | |
89 | |
90 } // namespace webrtc | |
91 | |
92 #endif // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_ | |
OLD | NEW |