Configure action logging and anonymous analytics in ACLI
Starting with ACLI release 9.4, you can log detailed information about each action that runs and optionally share anonymized analytics with Appfire. These features help improve product planning and development while allowing you to maintain control over data sharing and visibility.
Both features are supported by the ACLI Managed Service and are independently configurable:
Action logging is turned off by default.
Anonymous analytics sharing is turned on by default.
Enable action logging
When you enable action logging, ACLI creates a daily log file named in the format action-YYYY-MM-DD.log
in the directory you configure for logging. Each log entry is a single line of JSON that contains structured information about an action run.
Here’s an example of what the log looks like when running the runFromPageList
action, which internally runs modifyPage
:
{"serverInfo":{"baseUrl":"https:\/\/examplegear.com\/wiki","product":"Confluence","build":"b5532e6ae35f828219efdf3f57295a2415782672","buildDate":null,"version":"1000.0.0"},"exitValue":0,"actionInfo":{"server":"https:\/\/examplegear.com","common":"-a modifyPage --id @pageId@ --findReplace \"Replace this:With that\" ","action":"runFromPageList","user":"bob@appfire.com","cql":"text ~ 'Replace this'","token":"***"},"exitCode":"SUCCESS","id":"1a39045d-5215-4566-b465-31125bd457eb"}
{"exitValue":0,"actionInfo":{"action":"modifyPage","findReplace":"Replace this:With that","id":"1725136908"},"exitCode":"SUCCESS","id":"47493b71-92f9-4915-8abf-b4af5f5421c5","parentId":"1a39045d-5215-4566-b465-31125bd457eb"}
Here are those same two log records, formatted for readability:
runFromPageList
{
"serverInfo": {
"baseUrl": "https://examplegear.com/wiki",
"product": "Confluence",
"build": "b5532e6ae35f828219efdf3f57295a2415782672",
"buildDate": null,
"version": "1000.0.0"
},
"exitValue": 0,
"actionInfo": {
"server": "https://examplegear.com",
"common": "-a modifyPage --id @pageId@ --findReplace \"Replace this:With that\" ",
"action": "runFromPageList",
"user": "bob@appfire.com",
"cql": "text ~ 'Replace this'",
"token": "***"
},
"exitCode": "SUCCESS",
"id": "1a39045d-5215-4566-b465-31125bd457eb"
}
modifyPage
{
"exitValue": 0,
"actionInfo": {
"action": "modifyPage",
"findReplace": "Replace this:With that",
"id": "1725136908"
},
"exitCode": "SUCCESS",
"id": "47493b71-92f9-4915-8abf-b4af5f5421c5",
"parentId": "1a39045d-5215-4566-b465-31125bd457eb"
}
Each log entry includes a unique "id"
. When actions run within other actions (such as runFromPageList
), the child entries include a "parentId"
that links them to the top-level action.
Understand anonymous analytics
Anonymous analytics use the same logging system but remove identifying information before sending any data to Appfire. This helps us understand general usage trends without knowing who performed the actions or what content was affected.
Here's how the two records above look after anonymization:
runFromPageList (anonymized)
{
"serverInfo": {
"baseUrl": "",
"product": "Confluence",
"build": "b5532e6ae35f828219efdf3f57295a2415782672",
"buildDate": null,
"version": "1000.0.0"
},
"exitValue": 0,
"actionInfo": {
"server": "",
"common": "",
"action": "runFromPageList",
"user": "",
"cql": "",
"token": ""
},
"exitCode": "SUCCESS",
"id": "1a39045d-5215-4566-b465-31125bd457eb"
}
modifyPage (anonymized)
{
"exitValue": 0,
"actionInfo": {
"action": "modifyPage",
"findReplace": "",
"id": ""
},
"exitCode": "SUCCESS",
"id": "47493b71-92f9-4915-8abf-b4af5f5421c5",
"parentId": "1a39045d-5215-4566-b465-31125bd457eb"
}
These anonymized logs help us plan features and improvements based on how ACLI is used—without collecting any personal, project, or content-specific data.
Configure logging and analytics
You can control both features through the acli-service.properties
file, located in your ACLI installation directory. The ACLI Managed Service reads this configuration and runs as a background process to handle logging and analytics with minimal performance impact.
Here’s an example acli-service.properties
configuration created by the installer:
# ACLI service configuration - service starts only if a feature is enabled
port = 7789
# Logging directory (absolute or relative path)
loggingDirectory = logs
# Enable action logging
actionLogging = false
# Unique ID for this installation
installationId = 11991b6b-f512-45c6-7fc3-6bdbb2b622d1
# Logging level: debug, info, warn, or error
serviceLogLevel = info
To stop sharing anonymous analytics with Appfire, add this line:
shareAnalytics = false
If the file is missing, ACLI uses default values: analytics sharing is enabled, and action logging is disabled. If you installed ACLI using a ZIP distribution, you can create this file manually to configure logging or disable analytics.
About the ACLI Managed Service
The ACLI Managed Service is a lightweight background web server that supports logging and analytics. It runs on localhost
using the configured port (default is 7789
) and stores logs in the directory defined by loggingDirectory
(default is logs
in the installation directory).
ACLI automatically starts the service under the following conditions:
Anonymous analytics is enabled (by default or in the configuration)
Action logging is enabled
You access the web UI.
ACLI stops the service automatically when it's no longer needed. You can also stop it manually:
acli -a stopServer --port 0
Do this before deleting the installation directory, or use the uninstaller if you installed ACLI using an installer.