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++
		
	
/*
 | 
						|
 *  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_
 |