You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			93 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
		
		
			
		
	
	
			93 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
| 
											10 years ago
										 | /*
 | ||
|  |  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | ||
|  |  * | ||
|  |  *  Use of this source code is governed by a BSD-style license | ||
|  |  *  that can be found in the LICENSE file in the root of the source | ||
|  |  *  tree. An additional intellectual property rights grant can be found | ||
|  |  *  in the file PATENTS.  All contributing project authors may | ||
|  |  *  be found in the AUTHORS file in the root of the source tree. | ||
|  |  * | ||
|  |  *  System independent wrapper for logging runtime information to file. | ||
|  |  *  Note: All log messages will be written to the same trace file. | ||
|  |  *  Note: If too many messages are written to file there will be a build up of | ||
|  |  *  messages. Apply filtering to avoid that. | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_
 | ||
|  | #define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_
 | ||
|  | 
 | ||
|  | #include "webrtc/common_types.h"
 | ||
|  | #include "webrtc/typedefs.h"
 | ||
|  | 
 | ||
|  | namespace webrtc { | ||
|  | 
 | ||
|  | #if defined(WEBRTC_RESTRICT_LOGGING)
 | ||
|  | // Disable all TRACE macros. The LOG macro is still functional.
 | ||
|  | #define WEBRTC_TRACE true ? (void) 0 : Trace::Add
 | ||
|  | #else
 | ||
|  | #define WEBRTC_TRACE Trace::Add
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | class Trace { | ||
|  |  public: | ||
|  |   // The length of the trace text preceeding the log message.
 | ||
|  |   static const int kBoilerplateLength; | ||
|  |   // The position of the timestamp text within a trace.
 | ||
|  |   static const int kTimestampPosition; | ||
|  |   // The length of the timestamp (without "delta" field).
 | ||
|  |   static const int kTimestampLength; | ||
|  | 
 | ||
|  |   // Increments the reference count to the trace.
 | ||
|  |   static void CreateTrace(); | ||
|  |   // Decrements the reference count to the trace.
 | ||
|  |   static void ReturnTrace(); | ||
|  |   // Note: any instance that writes to the trace file should increment and
 | ||
|  |   // decrement the reference count on construction and destruction,
 | ||
|  |   // respectively.
 | ||
|  | 
 | ||
|  |   // Specifies what type of messages should be written to the trace file. The
 | ||
|  |   // filter parameter is a bitmask where each message type is enumerated by the
 | ||
|  |   // TraceLevel enumerator. TODO(hellner): why is the TraceLevel enumerator not
 | ||
|  |   // defined in this file?
 | ||
|  |   static void set_level_filter(uint32_t filter) { level_filter_ = filter; } | ||
|  | 
 | ||
|  |   // Returns what type of messages are written to the trace file.
 | ||
|  |   static uint32_t level_filter() { return level_filter_; } | ||
|  | 
 | ||
|  |   // Sets the file name. If add_file_counter is false the same file will be
 | ||
|  |   // reused when it fills up. If it's true a new file with incremented name
 | ||
|  |   // will be used.
 | ||
|  |   static int32_t SetTraceFile(const char* file_name, | ||
|  |                               const bool add_file_counter = false); | ||
|  | 
 | ||
|  |   // Returns the name of the file that the trace is currently writing to.
 | ||
|  |   static int32_t TraceFile(char file_name[1024]); | ||
|  | 
 | ||
|  |   // Registers callback to receive trace messages.
 | ||
|  |   // TODO(hellner): Why not use OutStream instead? Why is TraceCallback not
 | ||
|  |   // defined in this file?
 | ||
|  |   static int32_t SetTraceCallback(TraceCallback* callback); | ||
|  | 
 | ||
|  |   // Adds a trace message for writing to file. The message is put in a queue
 | ||
|  |   // for writing to file whenever possible for performance reasons. I.e. there
 | ||
|  |   // is a crash it is possible that the last, vital logs are not logged yet.
 | ||
|  |   // level is the type of message to log. If that type of messages is
 | ||
|  |   // filtered it will not be written to file. module is an identifier for what
 | ||
|  |   // part of the code the message is coming.
 | ||
|  |   // id is an identifier that should be unique for that set of classes that
 | ||
|  |   // are associated (e.g. all instances owned by an engine).
 | ||
|  |   // msg and the ellipsis are the same as e.g. sprintf.
 | ||
|  |   // TODO(hellner) Why is TraceModule not defined in this file?
 | ||
|  |   static void Add(const TraceLevel level, | ||
|  |                   const TraceModule module, | ||
|  |                   const int32_t id, | ||
|  |                   const char* msg, ...); | ||
|  | 
 | ||
|  |  private: | ||
|  |   static uint32_t level_filter_; | ||
|  | }; | ||
|  | 
 | ||
|  | }  // namespace webrtc
 | ||
|  | 
 | ||
|  | #endif  // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_
 |