[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-3-0' - common/Log.cpp common/Log.hpp test/UnitAdmin.cpp test/UnitTimeout.cpp wsd/DocumentBroker.cpp wsd/QueueHandler.hpp wsd/Storage.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Mon Jan 22 17:09:27 UTC 2018
common/Log.cpp | 42 ----------------------------
common/Log.hpp | 20 ++++++-------
test/UnitAdmin.cpp | 71 ++++++++++++++++++++++++++-----------------------
test/UnitTimeout.cpp | 2 -
wsd/DocumentBroker.cpp | 44 +++++++++++++++---------------
wsd/QueueHandler.hpp | 10 +++---
wsd/Storage.cpp | 2 -
7 files changed, 77 insertions(+), 114 deletions(-)
New commits:
commit 3c3c08f29a20f81b8e053ebcf2408d0297962dbb
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sun Jan 14 20:39:06 2018 -0500
wsd: cleanup logging and remove unused helpers
Now all logging is done after checking if the
level in question is enabled or not (thanks to
the macros LOG_XXX), which saves unnecessary
conversions and stringification when said level
is disabled.
Change-Id: Icde31e067f60269563896f04f8b0d65643720766
Reviewed-on: https://gerrit.libreoffice.org/47885
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
Tested-by: Michael Meeks <michael.meeks at collabora.com>
(cherry picked from commit c06376cc1d2e3a331e133140fc359f73783cea0e)
Reviewed-on: https://gerrit.libreoffice.org/48345
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/common/Log.cpp b/common/Log.cpp
index 0b19d88f..94d2fd13 100644
--- a/common/Log.cpp
+++ b/common/Log.cpp
@@ -182,53 +182,13 @@ namespace Log
}
oss << " Log level is [" << logger.getLevel() << "].";
- info(oss.str());
+ LOG_INF(oss.str());
}
Poco::Logger& logger()
{
return Poco::Logger::get(Source.inited ? Source.name : std::string());
}
-
- void trace(const std::string& msg)
- {
- LOG_TRC(msg);
- }
-
- void debug(const std::string& msg)
- {
- LOG_DBG(msg);
- }
-
- void info(const std::string& msg)
- {
- LOG_INF(msg);
- }
-
- void warn(const std::string& msg)
- {
- LOG_WRN(msg);
- }
-
- void error(const std::string& msg)
- {
- LOG_ERR(msg);
- }
-
- void syserror(const std::string& msg)
- {
- LOG_SYS(msg);
- }
-
- void fatal(const std::string& msg)
- {
- LOG_FTL(msg);
- }
-
- void sysfatal(const std::string& msg)
- {
- LOG_SFL(msg);
- }
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/common/Log.hpp b/common/Log.hpp
index 0be4983f..a3e4a9ae 100644
--- a/common/Log.hpp
+++ b/common/Log.hpp
@@ -22,6 +22,13 @@
#include <Poco/DateTimeFormatter.h>
#include <Poco/Logger.h>
+inline std::ostream& operator<< (std::ostream& os, const Poco::Timestamp& ts)
+{
+ os << Poco::DateTimeFormatter::format(Poco::DateTime(ts),
+ Poco::DateTimeFormat::ISO8601_FRAC_FORMAT);
+ return os;
+}
+
namespace Log
{
void initialize(const std::string& name,
@@ -33,15 +40,6 @@ namespace Log
char* prefix(char* buffer, const char* level, bool sigSafe);
- void trace(const std::string& msg);
- void debug(const std::string& msg);
- void info(const std::string& msg);
- void warn(const std::string& msg);
- void error(const std::string& msg);
- void syserror(const std::string& msg);
- void fatal(const std::string& msg);
- void sysfatal(const std::string& msg);
-
inline bool traceEnabled() { return logger().trace(); }
inline bool debugEnabled() { return logger().debug(); }
inline bool infoEnabled() { return logger().information(); }
@@ -177,8 +175,8 @@ namespace Log
{
if (lhs.enabled())
{
- lhs._stream << Poco::DateTimeFormatter::format(Poco::DateTime(rhs),
- Poco::DateTimeFormat::ISO8601_FRAC_FORMAT);
+ lhs._stream << Poco::DateTimeFormatter::format(Poco::DateTime(rhs),
+ Poco::DateTimeFormat::ISO8601_FRAC_FORMAT);
}
return lhs;
diff --git a/test/UnitAdmin.cpp b/test/UnitAdmin.cpp
index 4f4f877c..e6d52c5c 100644
--- a/test/UnitAdmin.cpp
+++ b/test/UnitAdmin.cpp
@@ -79,7 +79,7 @@ private:
if (response.getStatus() == HTTPResponse::HTTP_UNAUTHORIZED)
res = TestResult::Ok;
- Log::info(std::string("testIncorrectPassword: ") + (res == TestResult::Ok ? "OK" : "FAIL"));
+ LOG_INF("testIncorrectPassword: " << (res == TestResult::Ok ? "OK" : "FAIL"));
return res;
}
@@ -117,10 +117,10 @@ private:
}
else
{
- Log::info("testCorrectPassword: Invalid cookie properties");
+ LOG_INF("testCorrectPassword: Invalid cookie properties");
}
- Log::info(std::string("testCorrectPassword: ") + (res == TestResult::Ok ? "OK" : "FAIL"));
+ LOG_INF("testCorrectPassword: " << (res == TestResult::Ok ? "OK" : "FAIL"));
return res;
}
@@ -138,7 +138,7 @@ private:
_adminWs->sendFrame(testMessage.data(), testMessage.size());
if (_messageReceivedCV.wait_for(lock, std::chrono::milliseconds(_messageTimeoutMilliSeconds)) == std::cv_status::timeout)
{
- Log::info("testWebSocketWithoutAuth: Timed out waiting for admin console message");
+ LOG_INF("testWebSocketWithoutAuth: Timed out waiting for admin console message");
return TestResult::TimedOut;
}
lock.unlock();
@@ -147,11 +147,11 @@ private:
if (tokens.count() != 1 ||
tokens[0] != "NotAuthenticated")
{
- Log::info("testWebSocketWithoutAuth: Unrecognized message format");
+ LOG_INF("testWebSocketWithoutAuth: Unrecognized message format");
return TestResult::Failed;
}
- Log::info(std::string("testWebSocketWithoutAuth: OK"));
+ LOG_INF("testWebSocketWithoutAuth: OK");
return TestResult::Ok;
}
@@ -169,7 +169,7 @@ private:
_adminWs->sendFrame(testMessage.data(), testMessage.size());
if (_messageReceivedCV.wait_for(lock, std::chrono::milliseconds(_messageTimeoutMilliSeconds)) == std::cv_status::timeout)
{
- Log::info("testWebSocketWithIncorrectAuthToken: Timed out waiting for admin console message");
+ LOG_INF("testWebSocketWithIncorrectAuthToken: Timed out waiting for admin console message");
return TestResult::TimedOut;
}
lock.unlock();
@@ -178,11 +178,11 @@ private:
if (tokens.count() != 1 ||
tokens[0] != "InvalidAuthToken")
{
- Log::info("testWebSocketWithIncorrectAuthToken: Unrecognized message format");
+ LOG_INF("testWebSocketWithIncorrectAuthToken: Unrecognized message format");
return TestResult::Failed;
}
- Log::info(std::string("testWebSocketWithIncorrectAuthToken: OK"));
+ LOG_INF("testWebSocketWithIncorrectAuthToken: OK");
return TestResult::Ok;
}
@@ -220,7 +220,7 @@ private:
_docWs1->sendFrame(loadMessage1.data(), loadMessage1.size());
if (_messageReceivedCV.wait_for(lock, std::chrono::milliseconds(_messageTimeoutMilliSeconds)) == std::cv_status::timeout)
{
- Log::info("testAddDocNotify: Timed out waiting for admin console message");
+ LOG_INF("testAddDocNotify: Timed out waiting for admin console message");
return TestResult::TimedOut;
}
lock.unlock();
@@ -231,7 +231,7 @@ private:
tokens[0] != "adddoc" ||
tokens[2] != documentPath1.substr(documentPath1.find_last_of("/") + 1) )
{
- Log::info("testAddDocNotify: Unrecognized message format");
+ LOG_INF("testAddDocNotify: Unrecognized message format");
return TestResult::Failed;
}
@@ -248,7 +248,7 @@ private:
_docWs2->sendFrame(loadMessage1.data(), loadMessage1.size());
if (_messageReceivedCV.wait_for(lock, std::chrono::milliseconds(_messageTimeoutMilliSeconds)) == std::cv_status::timeout)
{
- Log::info("testAddDocNotify: Timed out waiting for admin console message");
+ LOG_INF("testAddDocNotify: Timed out waiting for admin console message");
return TestResult::TimedOut;
}
lock.unlock();
@@ -259,7 +259,7 @@ private:
tokens[0] != "adddoc" ||
tokens[2] != documentPath1.substr(documentPath1.find_last_of("/") + 1) )
{
- Log::info("testAddDocNotify: Unrecognized message format");
+ LOG_INF("testAddDocNotify: Unrecognized message format");
return TestResult::Failed;
}
@@ -283,7 +283,7 @@ private:
_docWs3->sendFrame(loadMessage2.data(), loadMessage2.size());
if (_messageReceivedCV.wait_for(lock, std::chrono::milliseconds(_messageTimeoutMilliSeconds)) == std::cv_status::timeout)
{
- Log::info("testAddDocNotify: Timed out waiting for admin console message");
+ LOG_INF("testAddDocNotify: Timed out waiting for admin console message");
return TestResult::TimedOut;
}
lock.unlock();
@@ -294,7 +294,7 @@ private:
tokens[0] != "adddoc" ||
tokens[2] != documentPath2.substr(documentPath2.find_last_of("/") + 1) )
{
- Log::info("testAddDocNotify: Unrecognized message format");
+ LOG_INF("testAddDocNotify: Unrecognized message format");
return TestResult::Failed;
}
@@ -304,7 +304,7 @@ private:
}
_docsCount++;
- Log::info(std::string("testAddDocNotify: OK"));
+ LOG_INF("testAddDocNotify: OK");
return TestResult::Ok;
}
@@ -317,7 +317,7 @@ private:
_adminWs->sendFrame(queryMessage.data(), queryMessage.size());
if (_messageReceivedCV.wait_for(lock, std::chrono::milliseconds(_messageTimeoutMilliSeconds)) == std::cv_status::timeout)
{
- Log::info("testUsersCount: Timed out waiting for admin console message");
+ LOG_INF("testUsersCount: Timed out waiting for admin console message");
return TestResult::TimedOut;
}
lock.unlock();
@@ -326,18 +326,18 @@ private:
if (tokens.count() != 2 ||
tokens[0] != "active_users_count")
{
- Log::info("testUsersCount: Unrecognized message format");
+ LOG_INF("testUsersCount: Unrecognized message format");
return TestResult::Failed;
}
else if (std::stoi(tokens[1]) != _usersCount)
{
- Log::info("testUsersCount: Incorrect users count "
+ LOG_INF("testUsersCount: Incorrect users count "
", expected: " + std::to_string(_usersCount) +
", actual: " + tokens[1]);
return TestResult::Failed;
}
- Log::info(std::string("testUsersCount: OK"));
+ LOG_INF("testUsersCount: OK");
return TestResult::Ok;
}
@@ -350,7 +350,7 @@ private:
_adminWs->sendFrame(queryMessage.data(), queryMessage.size());
if (_messageReceivedCV.wait_for(lock, std::chrono::milliseconds(_messageTimeoutMilliSeconds)) == std::cv_status::timeout)
{
- Log::info("testDocCount: Timed out waiting for admin console message");
+ LOG_INF("testDocCount: Timed out waiting for admin console message");
return TestResult::TimedOut;
}
lock.unlock();
@@ -360,18 +360,18 @@ private:
tokens[0] != "active_docs_count" ||
std::stoi(tokens[1]) != _docsCount)
{
- Log::info("testDocCount: Unrecognized message format");
+ LOG_INF("testDocCount: Unrecognized message format");
return TestResult::Failed;
}
else if (std::stoi(tokens[1]) != _docsCount)
{
- Log::info("testDocCount: Incorrect doc count "
+ LOG_INF("testDocCount: Incorrect doc count "
", expected: " + std::to_string(_docsCount) +
", actual: " + tokens[1]);
return TestResult::Failed;
}
- Log::info(std::string("testDocCount: OK"));
+ LOG_INF("testDocCount: OK");
return TestResult::Ok;
}
@@ -386,7 +386,7 @@ private:
_docWs1->close();
if (_messageReceivedCV.wait_for(lock, std::chrono::milliseconds(_messageTimeoutMilliSeconds)) == std::cv_status::timeout)
{
- Log::info("testRmDocNotify: Timed out waiting for admin console message");
+ LOG_INF("testRmDocNotify: Timed out waiting for admin console message");
return TestResult::TimedOut;
}
lock.unlock();
@@ -396,12 +396,12 @@ private:
tokens[0] != "rmdoc" ||
stoi(tokens[1]) != _docPid1)
{
- Log::info("testRmDocNotify: Invalid message format");
+ LOG_INF("testRmDocNotify: Invalid message format");
return TestResult::Failed;
}
_usersCount--;
- Log::info(std::string("testRmDocNotify: OK"));
+ LOG_INF("testRmDocNotify: OK");
return TestResult::Ok;
}
@@ -435,12 +435,17 @@ public:
{
_isTestRunning = true;
AdminTest test = _tests[_testCounter++];
- Log::info("UnitAdmin:: Starting test #" + std::to_string(_testCounter));
+ LOG_INF("UnitAdmin:: Starting test #" << _testCounter);
TestResult res = ((*this).*(test))();
- Log::info("UnitAdmin:: Finished test #" + std::to_string(_testCounter));
+ LOG_INF("UnitAdmin:: Finished test #" << _testCounter);
if (res != TestResult::Ok)
{
- Log::info("Exiting with " + (res == TestResult::Failed ? "FAIL" : (res == TestResult::TimedOut) ? "TIMEOUT" : "??? (" + std::to_string((int)res) + ")"));
+ LOG_INF("Exiting with " <<
+ (res == TestResult::Failed
+ ? "FAIL"
+ : (res == TestResult::TimedOut)
+ ? "TIMEOUT"
+ : "??? (" + std::to_string((int)res) + ")"));
exitTest(res);
assert(false);
return;
@@ -449,7 +454,7 @@ public:
// End this when all tests are finished
if (_tests.size() == _testCounter)
{
- Log::info("Exiting with OK");
+ LOG_INF("Exiting with OK");
exitTest(TestResult::Ok);
}
@@ -462,7 +467,7 @@ public:
std::unique_lock<std::mutex> lock(_messageReceivedMutex);
_messageReceivedCV.notify_all();
_messageReceived = message;
- Log::info("UnitAdmin:: onAdminNotifyMessage: " + message);
+ LOG_INF("UnitAdmin:: onAdminNotifyMessage: " << message);
}
virtual void onAdminQueryMessage(const std::string& message)
@@ -470,7 +475,7 @@ public:
std::unique_lock<std::mutex> lock(_messageReceivedMutex);
_messageReceivedCV.notify_all();
_messageReceived = message;
- Log::info("UnitAdmin:: onAdminQueryMessage: " + message);
+ LOG_INF("UnitAdmin:: onAdminQueryMessage: " << message);
}
};
diff --git a/test/UnitTimeout.cpp b/test/UnitTimeout.cpp
index c5df8745..b5931bfa 100644
--- a/test/UnitTimeout.cpp
+++ b/test/UnitTimeout.cpp
@@ -37,7 +37,7 @@ public:
{
if (!_timedOut)
{
- Log::info("Failed to timeout");
+ LOG_INF("Failed to timeout");
retValue = Poco::Util::Application::EXIT_SOFTWARE;
}
else
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index bba4b8bb..f76ed62d 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -544,7 +544,8 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
watermarkText = LOOLWSD::OverrideWatermark;
#endif
- LOG_DBG("Setting username [" << username << "] and userId [" << userid << "] for session [" << sessionId << "]");
+ LOG_DBG("Setting username [" << username << "] and userId [" <<
+ userid << "] for session [" << sessionId << "]");
session->setUserId(userid);
session->setUserName(username);
session->setUserExtraInfo(userExtraInfo);
@@ -561,20 +562,20 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
if (firstInstance)
{
_documentLastModifiedTime = fileInfo._modifiedTime;
- Log::debug() << "Document timestamp: " << _documentLastModifiedTime << Log::end;
+ LOG_DBG("Document timestamp: " << _documentLastModifiedTime);
}
else
{
// Check if document has been modified by some external action
- Log::trace() << "Document modified time: " << fileInfo._modifiedTime << Log::end;
+ LOG_TRC("Document modified time: " << fileInfo._modifiedTime);
static const Poco::Timestamp Zero(Poco::Timestamp::fromEpochTime(0));
if (_documentLastModifiedTime != Zero &&
fileInfo._modifiedTime != Zero &&
_documentLastModifiedTime != fileInfo._modifiedTime)
{
- Log::trace() << "Document " << _docKey << "] has been modified behind our back. Informing all clients."
- << "Expected: " << _documentLastModifiedTime
- << "Actual: " << fileInfo._modifiedTime << Log::end;
+ LOG_TRC("Document " << _docKey << "] has been modified behind our back. " <<
+ "Informing all clients. Expected: " << _documentLastModifiedTime <<
+ ", Actual: " << fileInfo._modifiedTime);
_documentChangedInStorage = true;
std::string message = "close: documentconflict";
@@ -596,9 +597,9 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
{
try
{
- std::string extension(plugin->getString("prefilter.extension"));
- std::string newExtension(plugin->getString("prefilter.newextension"));
- std::string commandLine(plugin->getString("prefilter.commandline"));
+ const std::string extension(plugin->getString("prefilter.extension"));
+ const std::string newExtension(plugin->getString("prefilter.newextension"));
+ const std::string commandLine(plugin->getString("prefilter.commandline"));
if (localPath.length() > extension.length()+1 &&
strcasecmp(localPath.substr(localPath.length() - extension.length() -1).data(), (std::string(".") + extension).data()) == 0)
@@ -606,28 +607,28 @@ bool DocumentBroker::load(const std::shared_ptr<ClientSession>& session, const s
// Extension matches, try the conversion. We convert the file to another one in
// the same (jail) directory, with just the new extension tacked on.
- std::string newRootPath = _storage->getRootFilePath() + "." + newExtension;
+ const std::string newRootPath = _storage->getRootFilePath() + "." + newExtension;
// The commandline must contain the space-separated substring @INPUT@ that is
// replaced with the input file name, and @OUTPUT@ for the output file name.
-
- std::vector<std::string>args;
-
Poco::StringTokenizer tokenizer(commandLine, " ");
if (tokenizer.replace("@INPUT@", _storage->getRootFilePath()) != 1 ||
tokenizer.replace("@OUTPUT@", newRootPath) != 1)
throw Poco::NotFoundException();
- for (std::size_t i = 1; i < tokenizer.count(); i++)
- args.push_back(tokenizer[i]);
+
+ std::vector<std::string> args;
+ for (std::size_t i = 1; i < tokenizer.count(); ++i)
+ args.emplace_back(tokenizer[i]);
Poco::ProcessHandle process = Poco::Process::launch(tokenizer[0], args);
- int rc = process.wait();
+ const int rc = process.wait();
if (rc != 0)
{
- LOG_ERR("Conversion from " << extension << " to " << newExtension <<" failed");
+ LOG_ERR("Conversion from " << extension << " to " << newExtension << " failed (" << rc << ").");
return false;
}
+
_storage->setRootFilePath(newRootPath);
localPath += "." + newExtension;
}
@@ -783,9 +784,8 @@ bool DocumentBroker::saveToStorageInternal(const std::string& sessionId,
// After a successful save, we are sure that document in the storage is same as ours
_documentChangedInStorage = false;
- Log::debug() << "Saved docKey [" << _docKey << "] to URI [" << uri
- << "] and updated tile cache. Document modified timestamp: "
- << _documentLastModifiedTime << Log::end;
+ LOG_DBG("Saved docKey [" << _docKey << "] to URI [" << uri << "] and updated timestamps. " <<
+ " Document modified timestamp: " << _documentLastModifiedTime);
// Resume polling.
_poll->wakeup();
@@ -801,8 +801,8 @@ bool DocumentBroker::saveToStorageInternal(const std::string& sessionId,
it->second->sendTextFrame("saveas: url=" + url + " filename=" + encodedName);
- Log::debug() << "Saved As docKey [" << _docKey << "] to URI [" << url
- << " with name '" << encodedName << "'] successfully.";
+ LOG_DBG("Saved As docKey [" << _docKey << "] to URI [" << url <<
+ " with name '" << encodedName << "'] successfully.");
}
return true;
}
diff --git a/wsd/QueueHandler.hpp b/wsd/QueueHandler.hpp
index 8ef3f623..54aea6ad 100644
--- a/wsd/QueueHandler.hpp
+++ b/wsd/QueueHandler.hpp
@@ -31,7 +31,7 @@ public:
{
Util::setThreadName(_name);
- Log::debug("Thread started.");
+ LOG_DBG("Thread started.");
try
{
@@ -40,23 +40,23 @@ public:
const auto input = _queue->get();
if (LOOLProtocol::getFirstToken(input) == "eof")
{
- Log::info("Received EOF. Finishing.");
+ LOG_INF("Received EOF. Finishing.");
break;
}
if (!_session->handleInput(input.data(), input.size()))
{
- Log::info("Socket handler flagged for finishing.");
+ LOG_INF("Socket handler flagged for finishing.");
break;
}
}
}
catch (const std::exception& exc)
{
- Log::error(std::string("QueueHandler::run: Exception: ") + exc.what());
+ LOG_ERR("QueueHandler::run: Exception: " << exc.what());
}
- Log::debug("Thread finished.");
+ LOG_DBG("Thread finished.");
}
private:
diff --git a/wsd/Storage.cpp b/wsd/Storage.cpp
index 1ebd28e0..47821890 100644
--- a/wsd/Storage.cpp
+++ b/wsd/Storage.cpp
@@ -313,7 +313,7 @@ StorageBase::SaveResult LocalStorage::saveLocalFileToStorage(const Authorization
// update its fileinfo object. This is used later to check if someone else changed the
// document while we are/were editing it
_fileInfo._modifiedTime = Poco::File(_uri.getPath()).getLastModified();
- Log::trace() << "New FileInfo modified time in storage " << _fileInfo._modifiedTime << Log::end;
+ LOG_TRC("New FileInfo modified time in storage " << _fileInfo._modifiedTime);
}
catch (const Poco::Exception& exc)
{
More information about the Libreoffice-commits
mailing list