Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15417532
D15702.id37829.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Referenced Files
None
Subscribers
None
D15702.id37829.diff
View Options
diff --git a/conf/aphlict/aphlict.default.json b/conf/aphlict/aphlict.default.json
--- a/conf/aphlict/aphlict.default.json
+++ b/conf/aphlict/aphlict.default.json
@@ -14,5 +14,11 @@
"ssl.key": null,
"ssl.cert": null
}
- ]
+ ],
+ "logs": [
+ {
+ "path": "/var/log/aphlict.log"
+ }
+ ],
+ "pidfile": "/var/tmp/aphlict/pid/aphlict.pid"
}
diff --git a/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php b/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php
--- a/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php
+++ b/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php
@@ -4,6 +4,7 @@
extends PhabricatorManagementWorkflow {
private $debug = false;
+ private $configData;
private $configPath;
final protected function setDebug($debug) {
@@ -74,6 +75,8 @@
$data,
array(
'servers' => 'list<wild>',
+ 'logs' => 'optional list<wild>',
+ 'pidfile' => 'string',
));
} catch (Exception $ex) {
throw new PhutilArgumentUsageException(
@@ -174,43 +177,54 @@
'admin'));
}
- $this->configPath = $full_path;
- }
+ $logs = $data['logs'];
+ foreach ($logs as $index => $log) {
+ PhutilTypeSpec::checkMap(
+ $log,
+ array(
+ 'path' => 'string',
+ ));
- final public function getPIDPath() {
- $path = PhabricatorEnv::getEnvConfig('notification.pidfile');
+ $path = $log['path'];
- try {
- $dir = dirname($path);
- if (!Filesystem::pathExists($dir)) {
- Filesystem::createDirectory($dir, 0755, true);
+ try {
+ $dir = dirname($path);
+ if (!Filesystem::pathExists($dir)) {
+ Filesystem::createDirectory($dir, 0755, true);
+ }
+ } catch (FilesystemException $ex) {
+ throw new PhutilArgumentUsageException(
+ pht(
+ 'Failed to create directory "%s" for specified log file (with '.
+ 'index "%s"). You should manually create this directory or '.
+ 'choose a different logfile location. %s',
+ $dir,
+ $ex->getMessage()));
}
- } catch (FilesystemException $ex) {
- throw new Exception(
- pht(
- "Failed to create '%s'. You should manually create this directory.",
- $dir));
}
- return $path;
- }
-
- final public function getLogPath() {
- $path = PhabricatorEnv::getEnvConfig('notification.log');
+ $this->configData = $data;
+ $this->configPath = $full_path;
+ $pid_path = $this->getPIDPath();
try {
$dir = dirname($path);
if (!Filesystem::pathExists($dir)) {
Filesystem::createDirectory($dir, 0755, true);
}
} catch (FilesystemException $ex) {
- throw new Exception(
+ throw new PhutilArgumentUsageException(
pht(
- "Failed to create '%s'. You should manually create this directory.",
- $dir));
+ 'Failed to create directory "%s" for specified PID file. You '.
+ 'should manually create this directory or choose a different '.
+ 'PID file location. %s',
+ $dir,
+ $ex->getMessage()));
}
+ }
- return $path;
+ final public function getPIDPath() {
+ return $this->configData['pidfile'];
}
final public function getPID() {
@@ -293,12 +307,8 @@
}
private function getServerArgv() {
- $log = $this->getLogPath();
-
$server_argv = array();
$server_argv[] = '--config='.$this->configPath;
- $server_argv[] = '--log='.$log;
-
return $server_argv;
}
diff --git a/src/applications/config/check/PhabricatorExtraConfigSetupCheck.php b/src/applications/config/check/PhabricatorExtraConfigSetupCheck.php
--- a/src/applications/config/check/PhabricatorExtraConfigSetupCheck.php
+++ b/src/applications/config/check/PhabricatorExtraConfigSetupCheck.php
@@ -305,6 +305,8 @@
'notification.ssl-cert' => $aphlict_reason,
'notification.ssl-key' => $aphlict_reason,
+ 'notification.pidfile' => $aphlict_reason,
+ 'notification.log' => $aphlict_reason,
);
return $ancient_config;
diff --git a/src/applications/config/option/PhabricatorNotificationConfigOptions.php b/src/applications/config/option/PhabricatorNotificationConfigOptions.php
--- a/src/applications/config/option/PhabricatorNotificationConfigOptions.php
+++ b/src/applications/config/option/PhabricatorNotificationConfigOptions.php
@@ -44,13 +44,6 @@
'string',
'http://localhost:22281/')
->setDescription(pht('Location of the notification receiver server.')),
- $this->newOption('notification.log', 'string', '/var/log/aphlict.log')
- ->setDescription(pht('Location of the server log file.')),
- $this->newOption(
- 'notification.pidfile',
- 'string',
- '/var/tmp/aphlict/pid/aphlict.pid')
- ->setDescription(pht('Location of the server PID file.')),
);
}
diff --git a/src/docs/user/configuration/notifications.diviner b/src/docs/user/configuration/notifications.diviner
--- a/src/docs/user/configuration/notifications.diviner
+++ b/src/docs/user/configuration/notifications.diviner
@@ -75,7 +75,9 @@
The configuration file has these settings:
- - `servers`: A list of servers to start.
+ - `servers`: //Required list.// A list of servers to start.
+ - `logs`: //Optional list.// A list of logs to write to.
+ - `pidfile`: //Required string.// Path to a PID file.
Each server in the `servers` list should be an object with these keys:
@@ -91,6 +93,10 @@
- `ssl.cert`: //Optional string.// If you want to use SSL on this port,
the path to an SSL certificate.
+Each log in the `logs` list should be an object with these keys:
+
+ - `path`: //Required string.// Path to the log file.
+
The defaults are appropriate for simple cases, but you may need to adjust them
if you are running a more complex configuration.
@@ -104,9 +110,6 @@
connect to in order to listen for notifications.
- `notification.server-uri` Internally-facing host and port that Phabricator
will connect to in order to publish notifications.
- - `notification.log` Log file location for the server.
- - `notification.pidfile` Pidfile location used to stop any running server when
- aphlict is restarted.
Verifying Server Status
diff --git a/support/aphlict/server/aphlict_server.js b/support/aphlict/server/aphlict_server.js
--- a/support/aphlict/server/aphlict_server.js
+++ b/support/aphlict/server/aphlict_server.js
@@ -8,7 +8,6 @@
function parse_command_line_arguments(argv) {
var args = {
- log: '/var/log/aphlict.log',
test: false,
config: null
};
@@ -49,9 +48,9 @@
process.on('uncaughtException', function(err) {
var context = null;
- if (err.code == 'EACCES' && err.path == args.log) {
+ if (err.code == 'EACCES') {
context = util.format(
- 'Unable to open logfile ("%s"). Check that permissions are set ' +
+ 'Unable to open file ("%s"). Check that permissions are set ' +
'correctly.',
err.path);
}
@@ -68,11 +67,6 @@
set_exit_code(1);
});
-// Add the logfile so we'll fail if we can't write to it.
-if (args.log) {
- debug.addLog(args.log);
-}
-
try {
require('ws');
} catch (ex) {
@@ -89,6 +83,12 @@
require('./lib/AphlictClientServer');
var ii;
+
+var logs = config.logs || [];
+for (ii = 0; ii < logs.length; ii++) {
+ debug.addLog(logs[ii].path);
+}
+
var servers = [];
for (ii = 0; ii < config.servers.length; ii++) {
var spec = config.servers[ii];
@@ -116,6 +116,10 @@
debug.log('Starting servers (service PID %d).', process.pid);
+for (ii = 0; ii < logs.length; ii++) {
+ debug.log('Logging to "%s".', logs[ii].path);
+}
+
var aphlict_servers = [];
var aphlict_clients = [];
var aphlict_admins = [];
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Mar 21, 5:27 PM (3 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7332822
Default Alt Text
D15702.id37829.diff (7 KB)
Attached To
Mode
D15702: Move Aphlict logging and PID configuration options to config file
Attached
Detach File
Event Timeline
Log In to Comment