mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			107 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * SRT - Secure, Reliable, Transport
 | |
|  * Copyright (c) 2018 Haivision Systems Inc.
 | |
|  * 
 | |
|  * This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
|  * 
 | |
|  */
 | |
| 
 | |
| /*****************************************************************************
 | |
| written by
 | |
|    Haivision Systems Inc.
 | |
|  *****************************************************************************/
 | |
| 
 | |
| #ifndef INC_SRT_LOGGING_API_H
 | |
| #define INC_SRT_LOGGING_API_H
 | |
| 
 | |
| // These are required for access functions:
 | |
| // - adding FA (requires set)
 | |
| // - setting a log stream (requires iostream)
 | |
| #ifdef __cplusplus
 | |
| #include <set>
 | |
| #include <iostream>
 | |
| #endif
 | |
| 
 | |
| #ifdef _WIN32
 | |
| #include "win/syslog_defs.h"
 | |
| #else
 | |
| #include <syslog.h>
 | |
| #endif
 | |
| 
 | |
| // Syslog is included so that it provides log level names.
 | |
| // Haivision log standard requires the same names plus extra one:
 | |
| #ifndef LOG_DEBUG_TRACE
 | |
| #define LOG_DEBUG_TRACE 8
 | |
| #endif
 | |
| // It's unused anyway, just for the record.
 | |
| #define SRT_LOG_LEVEL_MIN LOG_CRIT
 | |
| #define SRT_LOG_LEVEL_MAX LOG_DEBUG
 | |
| 
 | |
| // Flags
 | |
| #define SRT_LOGF_DISABLE_TIME 1
 | |
| #define SRT_LOGF_DISABLE_THREADNAME 2
 | |
| #define SRT_LOGF_DISABLE_SEVERITY 4
 | |
| #define SRT_LOGF_DISABLE_EOL 8
 | |
| 
 | |
| // Handler type.
 | |
| typedef void SRT_LOG_HANDLER_FN(void* opaque, int level, const char* file, int line, const char* area, const char* message);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| namespace srt_logging
 | |
| {
 | |
| 
 | |
| 
 | |
| struct LogFA
 | |
| {
 | |
| private:
 | |
|     int value;
 | |
| public:
 | |
|     operator int() const { return value; }
 | |
| 
 | |
|     LogFA(int v): value(v)
 | |
|     {
 | |
|         // Generally this was what it has to be used for.
 | |
|         // Unfortunately it couldn't be agreed with the
 | |
|         //logging_fa_all.insert(v);
 | |
|     }
 | |
| };
 | |
| 
 | |
| const LogFA LOGFA_GENERAL = 0;
 | |
| 
 | |
| 
 | |
| 
 | |
| namespace LogLevel
 | |
| {
 | |
|     // There are 3 general levels:
 | |
| 
 | |
|     // A. fatal - this means the application WILL crash.
 | |
|     // B. unexpected:
 | |
|     //    - error: this was unexpected for the library
 | |
|     //    - warning: this was expected by the library, but may be harmful for the application
 | |
|     // C. expected:
 | |
|     //    - note: a significant, but rarely occurring event
 | |
|     //    - debug: may occur even very often and enabling it can harm performance
 | |
| 
 | |
|     enum type
 | |
|     {
 | |
|         fatal = LOG_CRIT,
 | |
|         // Fatal vs. Error: with Error, you can still continue.
 | |
|         error = LOG_ERR,
 | |
|         // Error vs. Warning: Warning isn't considered a problem for the library.
 | |
|         warning = LOG_WARNING,
 | |
|         // Warning vs. Note: Note means something unusual, but completely correct behavior.
 | |
|         note = LOG_NOTICE,
 | |
|         // Note vs. Debug: Debug may occur even multiple times in a millisecond.
 | |
|         // (Well, worth noting that Error and Warning potentially also can).
 | |
|         debug = LOG_DEBUG
 | |
|     };
 | |
| }
 | |
| 
 | |
| class Logger;
 | |
| 
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 |