Add config option to redirect external helpers error output to a file

This commit is contained in:
Jean-Francois Dockes 2021-03-03 17:54:44 +01:00
parent a4b3aff5c4
commit ae2b4577c3
4 changed files with 70 additions and 50 deletions

View File

@ -162,7 +162,11 @@ bool MimeHandlerExec::next_document()
mexec.putenv(m_forPreview ? "RECOLL_FILTER_FORPREVIEW=yes" : mexec.putenv(m_forPreview ? "RECOLL_FILTER_FORPREVIEW=yes" :
"RECOLL_FILTER_FORPREVIEW=no"); "RECOLL_FILTER_FORPREVIEW=no");
mexec.setrlimit_as(m_filtermaxmbytes); mexec.setrlimit_as(m_filtermaxmbytes);
std::string errfile;
m_config->getConfParam("helperlogfilename", errfile);
if (!errfile.empty()) {
mexec.setStderr(errfile);
}
int status; int status;
try { try {
status = mexec.doexec(cmd, myparams, 0, &output); status = mexec.doexec(cmd, myparams, 0, &output);

View File

@ -63,6 +63,11 @@ bool MimeHandlerExecMultiple::startCmd()
m_cmd.setrlimit_as(m_filtermaxmbytes); m_cmd.setrlimit_as(m_filtermaxmbytes);
m_adv.setmaxsecs(m_filtermaxseconds); m_adv.setmaxsecs(m_filtermaxseconds);
m_cmd.setAdvise(&m_adv); m_cmd.setAdvise(&m_adv);
std::string errfile;
m_config->getConfParam("helperlogfilename", errfile);
if (!errfile.empty()) {
m_cmd.setStderr(errfile);
}
// Build parameter list: delete cmd name // Build parameter list: delete cmd name
vector<string>myparams(params.begin() + 1, params.end()); vector<string>myparams(params.begin() + 1, params.end());

View File

@ -660,6 +660,17 @@ logfilename = stderr
# <brief>Override logfilename for the indexer.</brief><descr></descr></var> # <brief>Override logfilename for the indexer.</brief><descr></descr></var>
#idxlogfilename = stderr #idxlogfilename = stderr
# <var name="helperlogfilename" type="fn">
#
# <brief>Destination file for external helpers standard error
# output.</brief>
#
# <descr>The external program error output is left alone by default,
# e.g. going to the terminal when the recoll[index] program is executed
# from the command line. Use /dev/null or a file inside a non-existent
# directory to completely suppress the output.</brief></var>
#helperlogfilename=
# <var name="daemloglevel" type="int"> # <var name="daemloglevel" type="int">
# #
# <brief>Override loglevel for the indexer in real time # <brief>Override loglevel for the indexer in real time

View File

@ -168,7 +168,7 @@ public:
bool waitIdle() { bool waitIdle() {
std::unique_lock<std::mutex> lock(m_mutex); std::unique_lock<std::mutex> lock(m_mutex);
if (!ok()) { if (!ok()) {
LOGERR("WorkQueue::waitIdle:" << m_name << ": not ok\n"); LOGINF("WorkQueue::waitIdle:" << m_name << ": queue already closed\n");
return false; return false;
} }