Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2016-12-08 18:23:22 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
2955b1fd2de458c7d881b05848880f475a9a974f
2955b1fd
1 parent
9e9cad18
support log rotate signal SIGUSR1. 3.0.8
隐藏空白字符变更
内嵌
并排对比
正在显示
9 个修改的文件
包含
61 行增加
和
23 行删除
README.md
trunk/src/app/srs_app_log.cpp
trunk/src/app/srs_app_log.hpp
trunk/src/app/srs_app_server.cpp
trunk/src/app/srs_app_server.hpp
trunk/src/core/srs_core.hpp
trunk/src/kernel/srs_kernel_consts.hpp
trunk/src/kernel/srs_kernel_log.cpp
trunk/src/kernel/srs_kernel_log.hpp
README.md
查看文件 @
2955b1f
...
...
@@ -378,6 +378,7 @@ Remark:
### History
*
v3.0, 2016-12-08, support log rotate signal SIGUSR1. 3.0.8
*
v3.0, 2016-12-07, fix typo and refine grammar. 3.0.7
*
v3.0, 2015-10-23, fix
[
#467
][
bug #467
]
, support write log to kafka. 3.0.6
*
v3.0, 2015-10-20, fix
[
#502
][
bug #502
]
, support snapshot with http-callback or transcoder. 3.0.5
...
...
trunk/src/app/srs_app_log.cpp
查看文件 @
2955b1f
...
...
@@ -127,6 +127,19 @@ int SrsFastLog::initialize()
return
ret
;
}
void
SrsFastLog
::
reopen
()
{
if
(
fd
>
0
)
{
::
close
(
fd
);
}
if
(
!
log_to_file_tank
)
{
return
;
}
open_log_file
();
}
void
SrsFastLog
::
verbose
(
const
char
*
tag
,
int
context_id
,
const
char
*
fmt
,
...)
{
if
(
_level
>
SrsLogLevel
::
Verbose
)
{
...
...
trunk/src/app/srs_app_log.hpp
查看文件 @
2955b1f
...
...
@@ -82,6 +82,7 @@ public:
virtual
~
SrsFastLog
();
public
:
virtual
int
initialize
();
virtual
void
reopen
();
virtual
void
verbose
(
const
char
*
tag
,
int
context_id
,
const
char
*
fmt
,
...);
virtual
void
info
(
const
char
*
tag
,
int
context_id
,
const
char
*
fmt
,
...);
virtual
void
trace
(
const
char
*
tag
,
int
context_id
,
const
char
*
fmt
,
...);
...
...
trunk/src/app/srs_app_server.cpp
查看文件 @
2955b1f
...
...
@@ -408,10 +408,10 @@ int SrsSignalManager::initialize()
int
SrsSignalManager
::
start
()
{
/**
* Note that if multiple processes are used (see below),
* the signal pipe should be initialized after the fork(2) call
* so that each process has its own private pipe.
*/
* Note that if multiple processes are used (see below),
* the signal pipe should be initialized after the fork(2) call
* so that each process has its own private pipe.
*/
struct
sigaction
sa
;
/* Install sig_catcher() as a signal handler */
...
...
@@ -433,15 +433,10 @@ int SrsSignalManager::start()
sa
.
sa_handler
=
SrsSignalManager
::
sig_catcher
;
sigemptyset
(
&
sa
.
sa_mask
);
sa
.
sa_flags
=
0
;
sigaction
(
SRS_SIGNAL_
DISPOSE
,
&
sa
,
NULL
);
sigaction
(
SRS_SIGNAL_
REOPEN_LOG
,
&
sa
,
NULL
);
sa
.
sa_handler
=
SrsSignalManager
::
sig_catcher
;
sigemptyset
(
&
sa
.
sa_mask
);
sa
.
sa_flags
=
0
;
sigaction
(
SRS_SIGNAL_PERSISTENCE_CONFIG
,
&
sa
,
NULL
);
srs_trace
(
"signal installed, reload=%d, dispose=%d, persistence=%d, grace_quit=%d"
,
SRS_SIGNAL_RELOAD
,
SRS_SIGNAL_DISPOSE
,
SRS_SIGNAL_PERSISTENCE_CONFIG
,
SRS_SIGNAL_GRACEFULLY_QUIT
);
srs_trace
(
"signal installed, reload=%d, reopen=%d, grace_quit=%d"
,
SRS_SIGNAL_RELOAD
,
SRS_SIGNAL_REOPEN_LOG
,
SRS_SIGNAL_GRACEFULLY_QUIT
);
return
pthread
->
start
();
}
...
...
@@ -906,19 +901,36 @@ int SrsServer::cycle()
return
ret
;
}
void
SrsServer
::
on_signal
(
int
signo
)
{
{
if
(
signo
==
SRS_SIGNAL_RELOAD
)
{
signal_reload
=
true
;
return
;
}
#ifndef SRS_AUTO_GPERF_MC
if
(
signo
==
SRS_SIGNAL_REOPEN_LOG
)
{
_srs_log
->
reopen
();
srs_warn
(
"reopen log file"
);
return
;
}
#endif
#ifdef SRS_AUTO_GPERF_MC
if
(
signo
==
SRS_SIGNAL_REOPEN_LOG
)
{
signal_gmc_stop
=
true
;
srs_warn
(
"for gmc, the SIGUSR1 used as SIGINT"
);
return
;
}
#endif
if
(
signo
==
SRS_SIGNAL_PERSISTENCE_CONFIG
)
{
signal_persistence_config
=
true
;
return
;
}
if
(
signo
==
SIGINT
||
signo
==
SRS_SIGNAL_DISPOSE
)
{
if
(
signo
==
SIGINT
)
{
#ifdef SRS_AUTO_GPERF_MC
srs_trace
(
"gmc is on, main cycle will terminate normally."
);
signal_gmc_stop
=
true
;
...
...
trunk/src/app/srs_app_server.hpp
查看文件 @
2955b1f
...
...
@@ -325,10 +325,10 @@ public:
* whatever, we will got the signo like the orignal signal(int signo) handler.
* @param signo the signal number from user, where:
* SRS_SIGNAL_GRACEFULLY_QUIT, the SIGTERM, dispose then quit.
* SRS_SIGNAL_DISPOSE, the SIGUSR2, dispose for gmc.
* SRS_SIGNAL_PERSISTENCE_CONFIG, the SIGUSR1, persistence config to file.
* SRS_SIGNAL_REOPEN_LOG, the SIGUSR1, reopen the log file.
* SRS_SIGNAL_RELOAD, the SIGHUP, reload the config.
* @remark, for SIGINT and SRS_SIGNAL_DISPOSE:
* SRS_SIGNAL_PERSISTENCE_CONFIG, application level signal, persistence config to file.
* @remark, for SIGINT:
* no gmc, directly exit.
* for gmc, set the variable signal_gmc_stop, the cycle will return and cleanup for gmc.
* @remark, maybe the HTTP RAW API will trigger the on_signal() also.
...
...
trunk/src/core/srs_core.hpp
查看文件 @
2955b1f
...
...
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// current release version
#define VERSION_MAJOR 3
#define VERSION_MINOR 0
#define VERSION_REVISION
7
#define VERSION_REVISION
8
// generated by configure, only macros.
#include <srs_auto_headers.hpp>
...
...
trunk/src/kernel/srs_kernel_consts.hpp
查看文件 @
2955b1f
...
...
@@ -133,14 +133,17 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// signal defines.
// reload the config file and apply new config.
#define SRS_SIGNAL_RELOAD SIGHUP
// terminate the srs with dispose to detect memory leak for gmc.
#define SRS_SIGNAL_DISPOSE SIGUSR2
// persistence the config in memory to config file.
// @see https://github.com/ossrs/srs/issues/319#issuecomment-134993922
#define SRS_SIGNAL_PERSISTENCE_CONFIG SIGUSR1
// reopen the log file.
#define SRS_SIGNAL_REOPEN_LOG SIGUSR1
// srs should gracefully quit, do dispose then exit.
#define SRS_SIGNAL_GRACEFULLY_QUIT SIGTERM
// application level signals.
// persistence the config in memory to config file.
// @see https://github.com/ossrs/srs/issues/319#issuecomment-134993922
// @remark we actually don't handle the signal for it's not a valid os signal.
#define SRS_SIGNAL_PERSISTENCE_CONFIG 1000
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
...
...
trunk/src/kernel/srs_kernel_log.cpp
查看文件 @
2955b1f
...
...
@@ -38,6 +38,10 @@ int ISrsLog::initialize()
return
ERROR_SUCCESS
;
}
void
ISrsLog
::
reopen
()
{
}
void
ISrsLog
::
verbose
(
const
char
*
/*tag*/
,
int
/*context_id*/
,
const
char
*
/*fmt*/
,
...)
{
}
...
...
trunk/src/kernel/srs_kernel_log.hpp
查看文件 @
2955b1f
...
...
@@ -71,6 +71,10 @@ public:
* initialize log utilities.
*/
virtual
int
initialize
();
/**
* reopen the log file for log rotate.
*/
virtual
void
reopen
();
public
:
/**
* log for verbose, very verbose information.
...
...
请
注册
或
登录
后发表评论