summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPranam Lashkari <lpranam@collabora.com>2022-06-15 15:02:56 +0530
committerPranam Lashkari <lpranam@collabora.com>2022-06-17 14:40:09 +0530
commit97c3631399643831a9492eb8629b978593cb6f83 (patch)
tree56725797518e7769724ac89fd11026e22c10c08a
parentintroduce unconditional logging method (diff)
downloadonline-backport/4908/distro/collabora/co-21-11.tar.gz
online-backport/4908/distro/collabora/co-21-11.zip
now logs can provide stats for the users each time they access a document Signed-off-by: Pranam Lashkari <lpranam@collabora.com> Change-Id: I75d1637864b97c553285bc5d1850a8f75cd50d9f
-rw-r--r--coolwsd.xml.in1
-rw-r--r--wsd/COOLWSD.cpp2
-rw-r--r--wsd/DocumentBroker.cpp16
3 files changed, 19 insertions, 0 deletions
diff --git a/coolwsd.xml.in b/coolwsd.xml.in
index e4f3af8104..9cecf2eb5d 100644
--- a/coolwsd.xml.in
+++ b/coolwsd.xml.in
@@ -88,6 +88,7 @@
<anonymization_salt type="uint" desc="The salt used to anonymize/obfuscate user-data in logs. Use a secret 64-bit random number." default="82589933">82589933</anonymization_salt>
</anonymize>
<docstats type="bool" desc="Enable to see document handling information in logs." default="false">false</docstats>
+ <userstats desc="Enable user stats. i.e: logs the details of a file and user" type="bool" default="false">false</userstats>
</logging>
<!--
diff --git a/wsd/COOLWSD.cpp b/wsd/COOLWSD.cpp
index 5d5682ccc1..cd57eb6a5f 100644
--- a/wsd/COOLWSD.cpp
+++ b/wsd/COOLWSD.cpp
@@ -1768,6 +1768,8 @@ void COOLWSD::innerInitialize(Application& self)
{ "logging.file[@enable]", "false" },
{ "logging.level", "trace" },
{ "logging.lokit_sal_log", "-INFO-WARN" },
+ { "logging.docstats", "false" },
+ { "logging.userstats", "false" },
{ "browser_logging", "false" },
{ "mount_jail_tree", "true" },
{ "net.connection_timeout_secs", "30" },
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 7b10a63c8a..65ba649eb0 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -786,6 +786,22 @@ bool DocumentBroker::download(const std::shared_ptr<ClientSession>& session, con
session->setDocumentOwner(true);
}
+ if (config::getBool("logging.userstats", false))
+ {
+ // using json because fetching details from json string is easier and will be consistent
+ Object::Ptr userStats = new Object();
+ userStats->set("PostMessageOrigin", wopifileinfo->getPostMessageOrigin());
+ userStats->set("UserID", COOLWSD::anonymizeUsername(userId));
+ userStats->set("BaseFileName", wopiStorage->getFileInfo().getFilename());
+ userStats->set("UserCanWrite", wopifileinfo->getUserCanWrite());
+
+ std::ostringstream ossUserStats;
+ userStats->stringify(ossUserStats);
+ const std::string userStatsString = ossUserStats.str();
+
+ LOG_ANY("User stats: " << userStatsString);
+ }
+
// Pass the ownership to client session
session->setWopiFileInfo(wopifileinfo);
}