1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

add srs_log_file to write log to file. change to 0.9.27

This commit is contained in:
winlin 2014-03-23 12:21:36 +08:00
parent 4ddb5256ac
commit d94b9f44b3
10 changed files with 76 additions and 10 deletions

View file

@ -17,7 +17,11 @@ chunk_size 60000;
# the logs dir. # the logs dir.
# if enabled ffmpeg, each stracoding stream will create a log file. # if enabled ffmpeg, each stracoding stream will create a log file.
# default: ./objs/logs # default: ./objs/logs
log_dir ./objs/logs; ff_log_dir ./objs/logs;
# the log file for srs.
# if not specified, disable log to file, only print to console.
# if speicfied, write log to file and print to console.
srs_log_file ./objs/srs.log;
# the max connections. # the max connections.
# if exceed the max connections, server will drop the new connection. # if exceed the max connections, server will drop the new connection.
# default: 2000 # default: 2000

View file

@ -2,5 +2,6 @@
# @see full.conf for detail config. # @see full.conf for detail config.
listen 1935; listen 1935;
srs_log_file ./objs/srs.log;
vhost __defaultVhost__ { vhost __defaultVhost__ {
} }

4
trunk/configure vendored
View file

@ -129,10 +129,10 @@ echo -e " | ${SrsGprofSummaryColor}gprof -b ./objs/srs gmon.out > gprof.
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}" echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsResearchSummaryColor}research: ./objs/research, api server, players, ts info.\${BLACK}" echo -e " |${SrsResearchSummaryColor}research: ./objs/research, api server, players, ts info.\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}" echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsUtestSummaryColor}utest: ./objs/srs_utest, the utest for srs\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsBWTCSummaryColor}bandwidth: ./objs/bandwidth, the bandwidth test client\${BLACK}" echo -e " |${SrsBWTCSummaryColor}bandwidth: ./objs/bandwidth, the bandwidth test client\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}" echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsUtestSummaryColor}utest: ./objs/srs_utest, the utest for srs\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsLibrtmpSummaryColor}librtmp @see: https://github.com/winlinvip/simple-rtmp-server/wiki/SrsLibrtmp\${BLACK}" echo -e " |${SrsLibrtmpSummaryColor}librtmp @see: https://github.com/winlinvip/simple-rtmp-server/wiki/SrsLibrtmp\${BLACK}"
echo -e " |${SrsLibrtmpSummaryColor}librtmp: ./objs/include, ./objs/lib, the srs-librtmp library\${BLACK}" echo -e " |${SrsLibrtmpSummaryColor}librtmp: ./objs/include, ./objs/lib, the srs-librtmp library\${BLACK}"
echo -e " | ${SrsLibrtmpSummaryColor}simple handshake: publish/play stream with simple handshake to server\${BLACK}" echo -e " | ${SrsLibrtmpSummaryColor}simple handshake: publish/play stream with simple handshake to server\${BLACK}"

View file

@ -16,6 +16,7 @@ ROOT="./"
APP="./objs/srs" APP="./objs/srs"
CONFIG="./conf/srs.conf" CONFIG="./conf/srs.conf"
DEFAULT_PID_FILE='./objs/srs.pid' DEFAULT_PID_FILE='./objs/srs.pid'
DEFAULT_LOG_FILE='./objs/srs.log'
######################################################################## ########################################################################
# utility functions # utility functions
@ -65,10 +66,17 @@ start() {
# not exists, start server # not exists, start server
ok_msg "Starting SRS..." ok_msg "Starting SRS..."
# get log file
srs_log_file=`cat ${ROOT}/${CONFIG} |grep '^srs_log_file'| awk '{print $2}'| awk -F ';' '{print $1}'`
# TODO: FIXME: set limit by, for instance, "ulimit -HSn 10000" # TODO: FIXME: set limit by, for instance, "ulimit -HSn 10000"
# TODO: FIXME: write log to, for instance, the same dir of log.
# TODO: FIXME: support deamon, without nohup. # TODO: FIXME: support deamon, without nohup.
if [[ -z $srs_log_file ]]; then
(cd ${ROOT}; nohup ${APP} -c ${CONFIG} >/dev/null 2>&1 &) (cd ${ROOT}; nohup ${APP} -c ${CONFIG} >/dev/null 2>&1 &)
else
(cd ${ROOT}; nohup ${APP} -c ${CONFIG} >> $srs_log_file 2>&1 &)
fi
# check again after start server # check again after start server
sleep 0.5 sleep 0.5

View file

@ -684,6 +684,11 @@ int SrsConfig::parse_file(const char* filename)
// TODO: check http. // TODO: check http.
// TODO: check pid. // TODO: check pid.
std::string filename = this->get_srs_log_file();
if (!filename.empty()) {
srs_trace("open log file %s and write to", filename.c_str());
}
return ret; return ret;
} }
@ -1253,11 +1258,11 @@ string SrsConfig::get_engine_output(SrsConfDirective* engine)
return conf->arg0(); return conf->arg0();
} }
string SrsConfig::get_log_dir() string SrsConfig::get_ffmpeg_log_dir()
{ {
srs_assert(root); srs_assert(root);
SrsConfDirective* conf = root->get("log_dir"); SrsConfDirective* conf = root->get("ff_log_dir");
if (!conf || conf->arg0().empty()) { if (!conf || conf->arg0().empty()) {
return "./objs/logs"; return "./objs/logs";
} }
@ -1265,6 +1270,18 @@ string SrsConfig::get_log_dir()
return conf->arg0(); return conf->arg0();
} }
string SrsConfig::get_srs_log_file()
{
srs_assert(root);
SrsConfDirective* conf = root->get("srs_log_file");
if (!conf || conf->arg0().empty()) {
return "";
}
return conf->arg0();
}
int SrsConfig::get_max_connections() int SrsConfig::get_max_connections()
{ {
srs_assert(root); srs_assert(root);

View file

@ -147,7 +147,8 @@ public:
virtual int get_engine_achannels(SrsConfDirective* engine); virtual int get_engine_achannels(SrsConfDirective* engine);
virtual void get_engine_aparams(SrsConfDirective* engine, std::vector<std::string>& aparams); virtual void get_engine_aparams(SrsConfDirective* engine, std::vector<std::string>& aparams);
virtual std::string get_engine_output(SrsConfDirective* engine); virtual std::string get_engine_output(SrsConfDirective* engine);
virtual std::string get_log_dir(); virtual std::string get_ffmpeg_log_dir();
virtual std::string get_srs_log_file();
virtual int get_max_connections(); virtual int get_max_connections();
virtual bool get_gop_cache(std::string vhost); virtual bool get_gop_cache(std::string vhost);
virtual double get_queue_length(std::string vhost); virtual double get_queue_length(std::string vhost);

View file

@ -118,7 +118,7 @@ int SrsFFMPEG::initialize(SrsRequest* req, SrsConfDirective* engine)
output = srs_replace(output, "[engine]", engine->arg0()); output = srs_replace(output, "[engine]", engine->arg0());
// write ffmpeg info to log file. // write ffmpeg info to log file.
log_file = _srs_config->get_log_dir(); log_file = _srs_config->get_ffmpeg_log_dir();
log_file += "/"; log_file += "/";
log_file += "encoder"; log_file += "encoder";
log_file += "-"; log_file += "-";

View file

@ -26,6 +26,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <stdarg.h> #include <stdarg.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <srs_app_config.hpp>
SrsThreadContext::SrsThreadContext() SrsThreadContext::SrsThreadContext()
{ {
} }
@ -57,11 +63,18 @@ SrsFastLog::SrsFastLog()
{ {
level = SrsLogLevel::Trace; level = SrsLogLevel::Trace;
log_data = new char[LOG_MAX_SIZE]; log_data = new char[LOG_MAX_SIZE];
fd = -1;
} }
SrsFastLog::~SrsFastLog() SrsFastLog::~SrsFastLog()
{ {
srs_freepa(log_data); srs_freepa(log_data);
if (fd > 0) {
::close(fd);
fd = -1;
}
} }
void SrsFastLog::verbose(const char* tag, int context_id, const char* fmt, ...) void SrsFastLog::verbose(const char* tag, int context_id, const char* fmt, ...)
@ -229,4 +242,24 @@ void SrsFastLog::write_log(char *str_log, int size, int _level)
} else{ } else{
printf("\033[31m%s\033[0m", str_log); printf("\033[31m%s\033[0m", str_log);
} }
// if specified log file, write log to it.
if (!_srs_config->get_srs_log_file().empty()) {
if (fd < 0) {
std::string filename = _srs_config->get_srs_log_file();
fd = ::open(filename.c_str(), O_RDWR | O_APPEND);
if(fd == -1 && errno == ENOENT) {
fd = open(filename.c_str(),
O_RDWR | O_CREAT | O_TRUNC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH
);
}
}
if (fd > 0) {
::write(fd, str_log, size);
}
}
} }

View file

@ -80,6 +80,8 @@ private:
// defined in SrsLogLevel. // defined in SrsLogLevel.
int level; int level;
char* log_data; char* log_data;
// log to file if specified srs_log_file
int fd;
public: public:
SrsFastLog(); SrsFastLog();
virtual ~SrsFastLog(); virtual ~SrsFastLog();

View file

@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// current release version // current release version
#define VERSION_MAJOR "0" #define VERSION_MAJOR "0"
#define VERSION_MINOR "9" #define VERSION_MINOR "9"
#define VERSION_REVISION "26" #define VERSION_REVISION "27"
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
// server info. // server info.
#define RTMP_SIG_SRS_KEY "srs" #define RTMP_SIG_SRS_KEY "srs"