mirror of
https://github.com/mumble-voip/mumble.git
synced 2025-10-26 11:19:16 +00:00
Add rotateLogs and quit methods for DBus
git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@904 05730e5d-ab1b-0410-a4ac-84af385074fa
This commit is contained in:
parent
272423982c
commit
680a5f1021
@ -1015,3 +1015,27 @@ void MetaDBus::setSuperUserPassword(int server_id, const QString &pw, const QDBu
|
||||
ServerDB::setSUPW(server_id, pw);
|
||||
}
|
||||
}
|
||||
|
||||
extern QFile *qfLog;
|
||||
|
||||
void MetaDBus::rotateLogs(const QDBusMessage &msg) {
|
||||
if (! qfLog || ! qfLog->isOpen()) {
|
||||
MurmurDBus::qdbc.send(msg.createErrorReply("net.sourceforge.mumble.Error.nolog", "Logfile not in use"));
|
||||
}
|
||||
qWarning("Logfile rotation requested from D-Bus, will reopen %s", qPrintable(Meta::mp.qsLogfile));
|
||||
qfLog->close();
|
||||
qfLog->setFileName(Meta::mp.qsLogfile);
|
||||
if (! qfLog->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) {
|
||||
delete qfLog;
|
||||
qfLog = NULL;
|
||||
MurmurDBus::qdbc.send(msg.createErrorReply("net.sourceforge.mumble.Error.logfail", "Failed to reopen log"));
|
||||
} else {
|
||||
qfLog->setTextModeEnabled(true);
|
||||
qWarning("Log rotated successfully");
|
||||
}
|
||||
}
|
||||
|
||||
void MetaDBus::quit() {
|
||||
qWarning("Quit requested from D-Bus");
|
||||
QCoreApplication::instance()->quit();
|
||||
}
|
||||
|
||||
@ -229,6 +229,8 @@ class MetaDBus : public QDBusAbstractAdaptor {
|
||||
void getDefaultConf(ConfigMap &values);
|
||||
void setConf(int server_id, const QString &key, const QString &value, const QDBusMessage &);
|
||||
void setSuperUserPassword(int server_id, const QString &pw, const QDBusMessage &);
|
||||
void rotateLogs(const QDBusMessage &);
|
||||
void quit();
|
||||
signals:
|
||||
void started(int server_id);
|
||||
void stopped(int server_id);
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
#include "DBus.h"
|
||||
#include "Meta.h"
|
||||
|
||||
QFile *logfile;
|
||||
QFile *qfLog = NULL;
|
||||
|
||||
static bool bVerbose = false;
|
||||
#ifdef QT_NO_DEBUG
|
||||
@ -48,11 +48,11 @@ static bool detach = true;
|
||||
static bool detach = false;
|
||||
#endif
|
||||
|
||||
Meta *meta;
|
||||
Meta *meta = NULL;
|
||||
|
||||
LogEmitter le;
|
||||
static LogEmitter le;
|
||||
|
||||
QStringList qlErrors;
|
||||
static QStringList qlErrors;
|
||||
|
||||
static void murmurMessageOutput(QtMsgType type, const char *msg) {
|
||||
char c;
|
||||
@ -73,7 +73,7 @@ static void murmurMessageOutput(QtMsgType type, const char *msg) {
|
||||
}
|
||||
QString m= QString::fromLatin1("<%1>%2 %3").arg(QChar::fromLatin1(c)).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")).arg(msg);
|
||||
|
||||
if (! logfile || ! logfile->isOpen()) {
|
||||
if (! qfLog || ! qfLog->isOpen()) {
|
||||
#ifdef Q_OS_UNIX
|
||||
if (! detach)
|
||||
fprintf(stderr, "%s\n", msg);
|
||||
@ -89,14 +89,14 @@ static void murmurMessageOutput(QtMsgType type, const char *msg) {
|
||||
} else {
|
||||
if (! qlErrors.isEmpty()) {
|
||||
foreach(const QString &e, qlErrors) {
|
||||
logfile->write(e.toUtf8());
|
||||
logfile->write("\n");
|
||||
qfLog->write(e.toUtf8());
|
||||
qfLog->write("\n");
|
||||
}
|
||||
qlErrors.clear();
|
||||
}
|
||||
logfile->write(m.toUtf8());
|
||||
logfile->write("\n");
|
||||
logfile->flush();
|
||||
qfLog->write(m.toUtf8());
|
||||
qfLog->write("\n");
|
||||
qfLog->flush();
|
||||
}
|
||||
le.addLogEntry(m);
|
||||
if (type == QtFatalMsg) {
|
||||
@ -202,14 +202,16 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
|
||||
if (detach && ! Meta::mp.qsLogfile.isEmpty()) {
|
||||
logfile = new QFile(Meta::mp.qsLogfile);
|
||||
if (! logfile->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) {
|
||||
delete logfile;
|
||||
logfile = NULL;
|
||||
qfLog = new QFile(Meta::mp.qsLogfile);
|
||||
if (! qfLog->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) {
|
||||
delete qfLog;
|
||||
qfLog = NULL;
|
||||
qWarning("Failed to open logfile %s. Will not detach.",qPrintable(Meta::mp.qsLogfile));
|
||||
detach = false;
|
||||
} else {
|
||||
logfile->setTextModeEnabled(true);
|
||||
qfLog->setTextModeEnabled(true);
|
||||
QFileInfo qfi(*qfLog);
|
||||
Meta::mp.qsLogfile = qfi.absoluteFilePath();
|
||||
}
|
||||
} else {
|
||||
detach = false;
|
||||
@ -296,9 +298,9 @@ int main(int argc, char **argv) {
|
||||
|
||||
qWarning("Shutting down");
|
||||
|
||||
if (logfile) {
|
||||
delete logfile;
|
||||
logfile = NULL;
|
||||
if (qfLog) {
|
||||
delete qfLog;
|
||||
qfLog = NULL;
|
||||
}
|
||||
|
||||
delete meta;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user