正在显示
12 个修改的文件
包含
103 行增加
和
43 行删除
| @@ -26,6 +26,10 @@ ff_log_dir ./objs/logs; | @@ -26,6 +26,10 @@ ff_log_dir ./objs/logs; | ||
| 26 | # if file, write log to file. requires srs_log_file if log to file. | 26 | # if file, write log to file. requires srs_log_file if log to file. |
| 27 | # default: file. | 27 | # default: file. |
| 28 | srs_log_tank file; | 28 | srs_log_tank file; |
| 29 | +# the log level, for all log tanks. | ||
| 30 | +# can be: verbose, info, trace, warn, error | ||
| 31 | +# defualt: trace | ||
| 32 | +srs_log_level trace; | ||
| 29 | # when srs_log_tank is file, specifies the log file. | 33 | # when srs_log_tank is file, specifies the log file. |
| 30 | # default: ./objs/srs.log | 34 | # default: ./objs/srs.log |
| 31 | srs_log_file ./objs/srs.log; | 35 | srs_log_file ./objs/srs.log; |
| @@ -1288,6 +1288,18 @@ string SrsConfig::get_srs_log_file() | @@ -1288,6 +1288,18 @@ string SrsConfig::get_srs_log_file() | ||
| 1288 | return conf->arg0(); | 1288 | return conf->arg0(); |
| 1289 | } | 1289 | } |
| 1290 | 1290 | ||
| 1291 | +string SrsConfig::get_srs_log_level() | ||
| 1292 | +{ | ||
| 1293 | + srs_assert(root); | ||
| 1294 | + | ||
| 1295 | + SrsConfDirective* conf = root->get("srs_log_level"); | ||
| 1296 | + if (!conf || conf->arg0().empty()) { | ||
| 1297 | + return "trace"; | ||
| 1298 | + } | ||
| 1299 | + | ||
| 1300 | + return conf->arg0(); | ||
| 1301 | +} | ||
| 1302 | + | ||
| 1291 | bool SrsConfig::get_srs_log_tank_file() | 1303 | bool SrsConfig::get_srs_log_tank_file() |
| 1292 | { | 1304 | { |
| 1293 | srs_assert(root); | 1305 | srs_assert(root); |
| @@ -149,6 +149,7 @@ public: | @@ -149,6 +149,7 @@ public: | ||
| 149 | virtual std::string get_engine_output(SrsConfDirective* engine); | 149 | virtual std::string get_engine_output(SrsConfDirective* engine); |
| 150 | virtual std::string get_ffmpeg_log_dir(); | 150 | virtual std::string get_ffmpeg_log_dir(); |
| 151 | virtual bool get_srs_log_tank_file(); | 151 | virtual bool get_srs_log_tank_file(); |
| 152 | + virtual std::string get_srs_log_level(); | ||
| 152 | virtual std::string get_srs_log_file(); | 153 | virtual std::string get_srs_log_file(); |
| 153 | virtual bool get_deamon(); | 154 | virtual bool get_deamon(); |
| 154 | virtual int get_max_connections(); | 155 | virtual int get_max_connections(); |
| @@ -587,8 +587,8 @@ int SrsHlsMuxer::segment_open(int64_t segment_start_dts) | @@ -587,8 +587,8 @@ int SrsHlsMuxer::segment_open(int64_t segment_start_dts) | ||
| 587 | srs_error("open hls muxer failed. ret=%d", ret); | 587 | srs_error("open hls muxer failed. ret=%d", ret); |
| 588 | return ret; | 588 | return ret; |
| 589 | } | 589 | } |
| 590 | - srs_info("open HLS muxer success. vhost=%s, path=%s, tmp=%s", | ||
| 591 | - vhost.c_str(), current->full_path.c_str(), tmp_file.c_str()); | 590 | + srs_info("open HLS muxer success. path=%s, tmp=%s", |
| 591 | + current->full_path.c_str(), tmp_file.c_str()); | ||
| 592 | 592 | ||
| 593 | return ret; | 593 | return ret; |
| 594 | } | 594 | } |
| @@ -670,7 +670,7 @@ int SrsHttpUri::initialize(std::string _url) | @@ -670,7 +670,7 @@ int SrsHttpUri::initialize(std::string _url) | ||
| 670 | srs_info("parse url %s success", purl); | 670 | srs_info("parse url %s success", purl); |
| 671 | 671 | ||
| 672 | query = get_uri_field(url, &hp_u, UF_QUERY); | 672 | query = get_uri_field(url, &hp_u, UF_QUERY); |
| 673 | - srs_info("parse query %s success", query); | 673 | + srs_info("parse query %s success", query.c_str()); |
| 674 | 674 | ||
| 675 | return ret; | 675 | return ret; |
| 676 | } | 676 | } |
| @@ -61,10 +61,12 @@ int SrsThreadContext::get_id() | @@ -61,10 +61,12 @@ int SrsThreadContext::get_id() | ||
| 61 | 61 | ||
| 62 | SrsFastLog::SrsFastLog() | 62 | SrsFastLog::SrsFastLog() |
| 63 | { | 63 | { |
| 64 | - level = SrsLogLevel::Trace; | 64 | + _level = SrsLogLevel::Trace; |
| 65 | log_data = new char[LOG_MAX_SIZE]; | 65 | log_data = new char[LOG_MAX_SIZE]; |
| 66 | 66 | ||
| 67 | fd = -1; | 67 | fd = -1; |
| 68 | + | ||
| 69 | + // TODO: support reload. | ||
| 68 | } | 70 | } |
| 69 | 71 | ||
| 70 | SrsFastLog::~SrsFastLog() | 72 | SrsFastLog::~SrsFastLog() |
| @@ -77,9 +79,19 @@ SrsFastLog::~SrsFastLog() | @@ -77,9 +79,19 @@ SrsFastLog::~SrsFastLog() | ||
| 77 | } | 79 | } |
| 78 | } | 80 | } |
| 79 | 81 | ||
| 82 | +int SrsFastLog::level() | ||
| 83 | +{ | ||
| 84 | + return _level; | ||
| 85 | +} | ||
| 86 | + | ||
| 87 | +void SrsFastLog::set_level(int level) | ||
| 88 | +{ | ||
| 89 | + _level = level; | ||
| 90 | +} | ||
| 91 | + | ||
| 80 | void SrsFastLog::verbose(const char* tag, int context_id, const char* fmt, ...) | 92 | void SrsFastLog::verbose(const char* tag, int context_id, const char* fmt, ...) |
| 81 | { | 93 | { |
| 82 | - if (level > SrsLogLevel::Verbose) { | 94 | + if (_level > SrsLogLevel::Verbose) { |
| 83 | return; | 95 | return; |
| 84 | } | 96 | } |
| 85 | 97 | ||
| @@ -94,12 +106,12 @@ void SrsFastLog::verbose(const char* tag, int context_id, const char* fmt, ...) | @@ -94,12 +106,12 @@ void SrsFastLog::verbose(const char* tag, int context_id, const char* fmt, ...) | ||
| 94 | size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap); | 106 | size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap); |
| 95 | va_end(ap); | 107 | va_end(ap); |
| 96 | 108 | ||
| 97 | - write_log(log_data, size, SrsLogLevel::Verbose); | 109 | + write_log(fd, log_data, size, SrsLogLevel::Verbose); |
| 98 | } | 110 | } |
| 99 | 111 | ||
| 100 | void SrsFastLog::info(const char* tag, int context_id, const char* fmt, ...) | 112 | void SrsFastLog::info(const char* tag, int context_id, const char* fmt, ...) |
| 101 | { | 113 | { |
| 102 | - if (level > SrsLogLevel::Info) { | 114 | + if (_level > SrsLogLevel::Info) { |
| 103 | return; | 115 | return; |
| 104 | } | 116 | } |
| 105 | 117 | ||
| @@ -114,12 +126,12 @@ void SrsFastLog::info(const char* tag, int context_id, const char* fmt, ...) | @@ -114,12 +126,12 @@ void SrsFastLog::info(const char* tag, int context_id, const char* fmt, ...) | ||
| 114 | size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap); | 126 | size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap); |
| 115 | va_end(ap); | 127 | va_end(ap); |
| 116 | 128 | ||
| 117 | - write_log(log_data, size, SrsLogLevel::Info); | 129 | + write_log(fd, log_data, size, SrsLogLevel::Info); |
| 118 | } | 130 | } |
| 119 | 131 | ||
| 120 | void SrsFastLog::trace(const char* tag, int context_id, const char* fmt, ...) | 132 | void SrsFastLog::trace(const char* tag, int context_id, const char* fmt, ...) |
| 121 | { | 133 | { |
| 122 | - if (level > SrsLogLevel::Trace) { | 134 | + if (_level > SrsLogLevel::Trace) { |
| 123 | return; | 135 | return; |
| 124 | } | 136 | } |
| 125 | 137 | ||
| @@ -134,12 +146,12 @@ void SrsFastLog::trace(const char* tag, int context_id, const char* fmt, ...) | @@ -134,12 +146,12 @@ void SrsFastLog::trace(const char* tag, int context_id, const char* fmt, ...) | ||
| 134 | size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap); | 146 | size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap); |
| 135 | va_end(ap); | 147 | va_end(ap); |
| 136 | 148 | ||
| 137 | - write_log(log_data, size, SrsLogLevel::Trace); | 149 | + write_log(fd, log_data, size, SrsLogLevel::Trace); |
| 138 | } | 150 | } |
| 139 | 151 | ||
| 140 | void SrsFastLog::warn(const char* tag, int context_id, const char* fmt, ...) | 152 | void SrsFastLog::warn(const char* tag, int context_id, const char* fmt, ...) |
| 141 | { | 153 | { |
| 142 | - if (level > SrsLogLevel::Warn) { | 154 | + if (_level > SrsLogLevel::Warn) { |
| 143 | return; | 155 | return; |
| 144 | } | 156 | } |
| 145 | 157 | ||
| @@ -154,12 +166,12 @@ void SrsFastLog::warn(const char* tag, int context_id, const char* fmt, ...) | @@ -154,12 +166,12 @@ void SrsFastLog::warn(const char* tag, int context_id, const char* fmt, ...) | ||
| 154 | size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap); | 166 | size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap); |
| 155 | va_end(ap); | 167 | va_end(ap); |
| 156 | 168 | ||
| 157 | - write_log(log_data, size, SrsLogLevel::Warn); | 169 | + write_log(fd, log_data, size, SrsLogLevel::Warn); |
| 158 | } | 170 | } |
| 159 | 171 | ||
| 160 | void SrsFastLog::error(const char* tag, int context_id, const char* fmt, ...) | 172 | void SrsFastLog::error(const char* tag, int context_id, const char* fmt, ...) |
| 161 | { | 173 | { |
| 162 | - if (level > SrsLogLevel::Error) { | 174 | + if (_level > SrsLogLevel::Error) { |
| 163 | return; | 175 | return; |
| 164 | } | 176 | } |
| 165 | 177 | ||
| @@ -177,7 +189,7 @@ void SrsFastLog::error(const char* tag, int context_id, const char* fmt, ...) | @@ -177,7 +189,7 @@ void SrsFastLog::error(const char* tag, int context_id, const char* fmt, ...) | ||
| 177 | // add strerror() to error msg. | 189 | // add strerror() to error msg. |
| 178 | size += snprintf(log_data + size, LOG_MAX_SIZE - size, "(%s)", strerror(errno)); | 190 | size += snprintf(log_data + size, LOG_MAX_SIZE - size, "(%s)", strerror(errno)); |
| 179 | 191 | ||
| 180 | - write_log(log_data, size, SrsLogLevel::Error); | 192 | + write_log(fd, log_data, size, SrsLogLevel::Error); |
| 181 | } | 193 | } |
| 182 | 194 | ||
| 183 | bool SrsFastLog::generate_header(const char* tag, int context_id, const char* level_name, int* header_size) | 195 | bool SrsFastLog::generate_header(const char* tag, int context_id, const char* level_name, int* header_size) |
| @@ -219,7 +231,7 @@ bool SrsFastLog::generate_header(const char* tag, int context_id, const char* le | @@ -219,7 +231,7 @@ bool SrsFastLog::generate_header(const char* tag, int context_id, const char* le | ||
| 219 | return true; | 231 | return true; |
| 220 | } | 232 | } |
| 221 | 233 | ||
| 222 | -void SrsFastLog::write_log(char *str_log, int size, int _level) | 234 | +void SrsFastLog::write_log(int& fd, char *str_log, int size, int level) |
| 223 | { | 235 | { |
| 224 | // ensure the tail and EOF of string | 236 | // ensure the tail and EOF of string |
| 225 | // LOG_TAIL_SIZE for the TAIL char. | 237 | // LOG_TAIL_SIZE for the TAIL char. |
| @@ -227,8 +239,8 @@ void SrsFastLog::write_log(char *str_log, int size, int _level) | @@ -227,8 +239,8 @@ void SrsFastLog::write_log(char *str_log, int size, int _level) | ||
| 227 | size = srs_min(LOG_MAX_SIZE - 1 - LOG_TAIL_SIZE, size); | 239 | size = srs_min(LOG_MAX_SIZE - 1 - LOG_TAIL_SIZE, size); |
| 228 | 240 | ||
| 229 | // add some to the end of char. | 241 | // add some to the end of char. |
| 230 | - log_data[size++] = LOG_TAIL; | ||
| 231 | - log_data[size++] = 0; | 242 | + str_log[size++] = LOG_TAIL; |
| 243 | + str_log[size++] = 0; | ||
| 232 | 244 | ||
| 233 | if (fd < 0 || !_srs_config->get_srs_log_tank_file()) { | 245 | if (fd < 0 || !_srs_config->get_srs_log_tank_file()) { |
| 234 | // if is error msg, then print color msg. | 246 | // if is error msg, then print color msg. |
| @@ -236,9 +248,9 @@ void SrsFastLog::write_log(char *str_log, int size, int _level) | @@ -236,9 +248,9 @@ void SrsFastLog::write_log(char *str_log, int size, int _level) | ||
| 236 | // \033[32m : green text code in shell | 248 | // \033[32m : green text code in shell |
| 237 | // \033[33m : yellow text code in shell | 249 | // \033[33m : yellow text code in shell |
| 238 | // \033[0m : normal text code | 250 | // \033[0m : normal text code |
| 239 | - if (_level <= SrsLogLevel::Trace) { | 251 | + if (level <= SrsLogLevel::Trace) { |
| 240 | printf("%s", str_log); | 252 | printf("%s", str_log); |
| 241 | - } else if (_level == SrsLogLevel::Warn) { | 253 | + } else if (level == SrsLogLevel::Warn) { |
| 242 | printf("\033[33m%s\033[0m", str_log); | 254 | printf("\033[33m%s\033[0m", str_log); |
| 243 | } else{ | 255 | } else{ |
| 244 | printf("\033[31m%s\033[0m", str_log); | 256 | printf("\033[31m%s\033[0m", str_log); |
| @@ -55,30 +55,13 @@ public: | @@ -55,30 +55,13 @@ public: | ||
| 55 | }; | 55 | }; |
| 56 | 56 | ||
| 57 | /** | 57 | /** |
| 58 | -* the log level, for example: | ||
| 59 | -* if specified Debug level, all level messages will be logged. | ||
| 60 | -* if specified Warn level, only Warn/Error/Fatal level messages will be logged. | ||
| 61 | -*/ | ||
| 62 | -class SrsLogLevel | ||
| 63 | -{ | ||
| 64 | -public: | ||
| 65 | - // only used for very verbose debug, generally, | ||
| 66 | - // we compile without this level for high performance. | ||
| 67 | - static const int Verbose = 0x01; | ||
| 68 | - static const int Info = 0x02; | ||
| 69 | - static const int Trace = 0x03; | ||
| 70 | - static const int Warn = 0x04; | ||
| 71 | - static const int Error = 0x05; | ||
| 72 | -}; | ||
| 73 | - | ||
| 74 | -/** | ||
| 75 | * we use memory/disk cache and donot flush when write log. | 58 | * we use memory/disk cache and donot flush when write log. |
| 76 | */ | 59 | */ |
| 77 | class SrsFastLog : public ISrsLog | 60 | class SrsFastLog : public ISrsLog |
| 78 | { | 61 | { |
| 79 | private: | 62 | private: |
| 80 | // defined in SrsLogLevel. | 63 | // defined in SrsLogLevel. |
| 81 | - int level; | 64 | + int _level; |
| 82 | char* log_data; | 65 | char* log_data; |
| 83 | // log to file if specified srs_log_file | 66 | // log to file if specified srs_log_file |
| 84 | int fd; | 67 | int fd; |
| @@ -86,6 +69,8 @@ public: | @@ -86,6 +69,8 @@ public: | ||
| 86 | SrsFastLog(); | 69 | SrsFastLog(); |
| 87 | virtual ~SrsFastLog(); | 70 | virtual ~SrsFastLog(); |
| 88 | public: | 71 | public: |
| 72 | + virtual int level(); | ||
| 73 | + virtual void set_level(int level); | ||
| 89 | virtual void verbose(const char* tag, int context_id, const char* fmt, ...); | 74 | virtual void verbose(const char* tag, int context_id, const char* fmt, ...); |
| 90 | virtual void info(const char* tag, int context_id, const char* fmt, ...); | 75 | virtual void info(const char* tag, int context_id, const char* fmt, ...); |
| 91 | virtual void trace(const char* tag, int context_id, const char* fmt, ...); | 76 | virtual void trace(const char* tag, int context_id, const char* fmt, ...); |
| @@ -93,7 +78,7 @@ public: | @@ -93,7 +78,7 @@ public: | ||
| 93 | virtual void error(const char* tag, int context_id, const char* fmt, ...); | 78 | virtual void error(const char* tag, int context_id, const char* fmt, ...); |
| 94 | private: | 79 | private: |
| 95 | virtual bool generate_header(const char* tag, int context_id, const char* level_name, int* header_size); | 80 | virtual bool generate_header(const char* tag, int context_id, const char* level_name, int* header_size); |
| 96 | - virtual void write_log(char* str_log, int size, int _level); | 81 | + static void write_log(int& fd, char* str_log, int size, int level); |
| 97 | }; | 82 | }; |
| 98 | 83 | ||
| 99 | #endif | 84 | #endif |
| @@ -149,8 +149,6 @@ int SrsListener::cycle() | @@ -149,8 +149,6 @@ int SrsListener::cycle() | ||
| 149 | return ret; | 149 | return ret; |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | - srs_verbose("accept client finished. conns=%d, ret=%d", (int)conns.size(), ret); | ||
| 153 | - | ||
| 154 | return ret; | 152 | return ret; |
| 155 | } | 153 | } |
| 156 | 154 | ||
| @@ -493,13 +491,15 @@ int SrsServer::accept_client(SrsListenerType type, st_netfd_t client_stfd) | @@ -493,13 +491,15 @@ int SrsServer::accept_client(SrsListenerType type, st_netfd_t client_stfd) | ||
| 493 | 491 | ||
| 494 | // directly enqueue, the cycle thread will remove the client. | 492 | // directly enqueue, the cycle thread will remove the client. |
| 495 | conns.push_back(conn); | 493 | conns.push_back(conn); |
| 496 | - srs_verbose("add conn from port %d to vector. conns=%d", port, (int)conns.size()); | 494 | + srs_verbose("add conn to vector."); |
| 497 | 495 | ||
| 498 | // cycle will start process thread and when finished remove the client. | 496 | // cycle will start process thread and when finished remove the client. |
| 499 | if ((ret = conn->start()) != ERROR_SUCCESS) { | 497 | if ((ret = conn->start()) != ERROR_SUCCESS) { |
| 500 | return ret; | 498 | return ret; |
| 501 | } | 499 | } |
| 502 | - srs_verbose("conn start finished. ret=%d", ret); | 500 | + srs_verbose("conn started success ."); |
| 501 | + | ||
| 502 | + srs_verbose("accept client finished. conns=%d, ret=%d", (int)conns.size(), ret); | ||
| 503 | 503 | ||
| 504 | return ret; | 504 | return ret; |
| 505 | } | 505 | } |
| @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 31 | // current release version | 31 | // current release version |
| 32 | #define VERSION_MAJOR "0" | 32 | #define VERSION_MAJOR "0" |
| 33 | #define VERSION_MINOR "9" | 33 | #define VERSION_MINOR "9" |
| 34 | -#define VERSION_REVISION "44" | 34 | +#define VERSION_REVISION "45" |
| 35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION | 35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION |
| 36 | // server info. | 36 | // server info. |
| 37 | #define RTMP_SIG_SRS_KEY "srs" | 37 | #define RTMP_SIG_SRS_KEY "srs" |
| @@ -31,6 +31,15 @@ ISrsLog::~ISrsLog() | @@ -31,6 +31,15 @@ ISrsLog::~ISrsLog() | ||
| 31 | { | 31 | { |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | +int ISrsLog::level() | ||
| 35 | +{ | ||
| 36 | + return SrsLogLevel::Trace; | ||
| 37 | +} | ||
| 38 | + | ||
| 39 | +void ISrsLog::set_level(int /*level*/) | ||
| 40 | +{ | ||
| 41 | +} | ||
| 42 | + | ||
| 34 | void ISrsLog::verbose(const char* /*tag*/, int /*context_id*/, const char* /*fmt*/, ...) | 43 | void ISrsLog::verbose(const char* /*tag*/, int /*context_id*/, const char* /*fmt*/, ...) |
| 35 | { | 44 | { |
| 36 | } | 45 | } |
| @@ -36,6 +36,23 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -36,6 +36,23 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 36 | #include <string.h> | 36 | #include <string.h> |
| 37 | 37 | ||
| 38 | /** | 38 | /** |
| 39 | +* the log level, for example: | ||
| 40 | +* if specified Debug level, all level messages will be logged. | ||
| 41 | +* if specified Warn level, only Warn/Error/Fatal level messages will be logged. | ||
| 42 | +*/ | ||
| 43 | +class SrsLogLevel | ||
| 44 | +{ | ||
| 45 | +public: | ||
| 46 | + // only used for very verbose debug, generally, | ||
| 47 | + // we compile without this level for high performance. | ||
| 48 | + static const int Verbose = 0x01; | ||
| 49 | + static const int Info = 0x02; | ||
| 50 | + static const int Trace = 0x03; | ||
| 51 | + static const int Warn = 0x04; | ||
| 52 | + static const int Error = 0x05; | ||
| 53 | +}; | ||
| 54 | + | ||
| 55 | +/** | ||
| 39 | * the log interface provides method to write log. | 56 | * the log interface provides method to write log. |
| 40 | * but we provides some macro, which enable us to disable the log when compile. | 57 | * but we provides some macro, which enable us to disable the log when compile. |
| 41 | * @see also SmtDebug/SmtTrace/SmtWarn/SmtError which is corresponding to Debug/Trace/Warn/Fatal. | 58 | * @see also SmtDebug/SmtTrace/SmtWarn/SmtError which is corresponding to Debug/Trace/Warn/Fatal. |
| @@ -47,6 +64,11 @@ public: | @@ -47,6 +64,11 @@ public: | ||
| 47 | virtual ~ISrsLog(); | 64 | virtual ~ISrsLog(); |
| 48 | public: | 65 | public: |
| 49 | /** | 66 | /** |
| 67 | + * defined in SrsLogLevel. | ||
| 68 | + */ | ||
| 69 | + virtual int level(); | ||
| 70 | + virtual void set_level(int level); | ||
| 71 | + /** | ||
| 50 | * log for verbose, very verbose information. | 72 | * log for verbose, very verbose information. |
| 51 | */ | 73 | */ |
| 52 | virtual void verbose(const char* tag, int context_id, const char* fmt, ...); | 74 | virtual void verbose(const char* tag, int context_id, const char* fmt, ...); |
| @@ -157,6 +157,21 @@ int main(int argc, char** argv) | @@ -157,6 +157,21 @@ int main(int argc, char** argv) | ||
| 157 | return ret; | 157 | return ret; |
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | + // config parsed, initialize log. | ||
| 161 | + if ("verbose" == _srs_config->get_srs_log_level()) { | ||
| 162 | + _srs_log->set_level(SrsLogLevel::Verbose); | ||
| 163 | + } else if ("info" == _srs_config->get_srs_log_level()) { | ||
| 164 | + _srs_log->set_level(SrsLogLevel::Info); | ||
| 165 | + } else if ("trace" == _srs_config->get_srs_log_level()) { | ||
| 166 | + _srs_log->set_level(SrsLogLevel::Trace); | ||
| 167 | + } else if ("warn" == _srs_config->get_srs_log_level()) { | ||
| 168 | + _srs_log->set_level(SrsLogLevel::Warn); | ||
| 169 | + } else if ("error" == _srs_config->get_srs_log_level()) { | ||
| 170 | + _srs_log->set_level(SrsLogLevel::Error); | ||
| 171 | + } else { | ||
| 172 | + _srs_log->set_level(SrsLogLevel::Trace); | ||
| 173 | + } | ||
| 174 | + | ||
| 160 | srs_trace("srs(simple-rtmp-server) "RTMP_SIG_SRS_VERSION); | 175 | srs_trace("srs(simple-rtmp-server) "RTMP_SIG_SRS_VERSION); |
| 161 | srs_trace("uname: "SRS_UNAME); | 176 | srs_trace("uname: "SRS_UNAME); |
| 162 | srs_trace("build: %s, %s", SRS_BUILD_DATE, srs_is_little_endian()? "little-endian":"big-endian"); | 177 | srs_trace("build: %s, %s", SRS_BUILD_DATE, srs_is_little_endian()? "little-endian":"big-endian"); |
-
请 注册 或 登录 后发表评论