Selaa lähdekoodia

Improve logs during cron actualization (#2964)

For
https://github.com/FreshRSS/FreshRSS/issues/2952#issuecomment-626218921
And fix a little bug writing logs with the wrong user name
Alexandre Alapetite 5 vuotta sitten
vanhempi
commit
11dd6e91b7
2 muutettua tiedostoa jossa 32 lisäystä ja 29 poistoa
  1. 30 28
      app/actualize_script.php
  2. 2 1
      lib/Minz/Log.php

+ 30 - 28
app/actualize_script.php

@@ -2,17 +2,27 @@
 <?php
 require(__DIR__ . '/../cli/_cli.php');
 
+/**
+ * Writes to FreshRSS admin log, and if it is not already done by default,
+ * writes to syslog (only if simplepie_syslog_enabled in FreshRSS configuration) and to STDERR
+ */
+function notice($message) {
+	Minz_Log::notice($message, ADMIN_LOG);
+	if (!COPY_LOG_TO_SYSLOG && SIMPLEPIE_SYSLOG_ENABLED) {
+		syslog(LOG_NOTICE, $message);
+	}
+	if (defined('STDERR') && !COPY_SYSLOG_TO_STDERR) {
+		fwrite(STDERR, $message . "\n");	//Unbuffered
+	}
+}
+
 session_cache_limiter('');
 ob_implicit_flush(false);
 ob_start();
 echo 'Results: ', "\n";	//Buffered
 
-if (defined('STDOUT')) {
-	$begin_date = date_create('now');
-	fwrite(STDOUT, 'Starting feed actualization at ' . $begin_date->format('c') . "\n");	//Unbuffered
-}
-
-syslog(LOG_INFO, 'FreshRSS Start feeds actualization...');
+$begin_date = date_create('now');
+notice('FreshRSS starts feeds actualization at ' . $begin_date->format('c'));
 
 // Set the header params ($_GET) to call the FRSS application.
 $_GET['c'] = 'feed';
@@ -25,12 +35,13 @@ $app = new FreshRSS();
 
 $system_conf = Minz_Configuration::get('system');
 $system_conf->auth_type = 'none';  // avoid necessity to be logged in (not saved!)
+define('SIMPLEPIE_SYSLOG_ENABLED', $system_conf->simplepie_syslog_enabled);
 
 // make sure the PHP setup of the CLI environment is compatible with FreshRSS as well
 performRequirementCheck($system_conf->db['type']);
 
 // Create the list of users to actualize.
-// Users are processed in a random order but always start with admin
+// Users are processed in a random order but always start with default user
 $users = listUsers();
 shuffle($users);
 if ($system_conf->default_user !== '') {
@@ -43,44 +54,35 @@ $min_last_activity = time() - $limits['max_inactivity'];
 foreach ($users as $user) {
 	if (($user !== $system_conf->default_user) &&
 			(FreshRSS_UserDAO::mtime($user) < $min_last_activity)) {
-		Minz_Log::notice('FreshRSS skip inactive user ' . $user, ADMIN_LOG);
-		if (defined('STDOUT')) {
-			fwrite(STDOUT, 'FreshRSS skip inactive user ' . $user . "\n");	//Unbuffered
-		}
+		notice('FreshRSS skip inactive user ' . $user);
 		continue;
 	}
-	Minz_Log::notice('FreshRSS actualize ' . $user, ADMIN_LOG);
-	if (defined('STDOUT')) {
-		fwrite(STDOUT, 'Actualize ' . $user . "...\n");	//Unbuffered
-	}
-	echo $user, ' ';	//Buffered
-
 
 	Minz_Session::_param('currentUser', $user);
 	new Minz_ModelPdo($user);	//TODO: FIXME: Quick-fix while waiting for a better FreshRSS() constructor/init
 	FreshRSS_Auth::giveAccess();
 	$app->init();
+	notice('FreshRSS actualize ' . $user . '...');
+	echo $user, ' ';	//Buffered
 	$app->run();
 
-
 	if (!invalidateHttpCache()) {
 		Minz_Log::warning('FreshRSS write access problem in ' . join_path(USERS_PATH, $user, 'log.txt'), ADMIN_LOG);
 		if (defined('STDERR')) {
 			fwrite(STDERR, 'FreshRSS write access problem in ' . join_path(USERS_PATH, $user, 'log.txt') . "\n");
 		}
 	}
+
+	Minz_Session::_param('currentUser', '_');
+	Minz_Session::_param('loginOk');
 	gc_collect_cycles();
 }
 
-Minz_Log::notice('FreshRSS actualize done.', ADMIN_LOG);
-if (defined('STDOUT')) {
-	fwrite(STDOUT, 'Done.' . "\n");
-	$end_date = date_create('now');
-	$duration = date_diff($end_date, $begin_date);
-	fwrite(STDOUT, 'Ending feed actualization at ' . $end_date->format('c') . "\n");	//Unbuffered
-	fwrite(STDOUT, 'Feed actualizations took ' . $duration->format('%a day(s), %h hour(s), %i minute(s) and %s seconds') . ' for ' . count($users) . " users\n");	//Unbuffered
-	fwrite(STDOUT, 'Memory usage: ' . format_bytes(memory_get_peak_usage(true)) . "\n");	//Unbuffered
-}
+$end_date = date_create('now');
+$duration = date_diff($end_date, $begin_date);
+notice('FreshRSS actualization done for ' . count($users) .
+	' users, using ' . format_bytes(memory_get_peak_usage(true)) . ' of memory, in ' .
+	$duration->format('%a day(s), %h hour(s), %i minute(s) and %s seconds.'));
+
 echo 'End.', "\n";
 ob_end_flush();
-syslog(LOG_INFO, 'FreshRSS feeds actualization done.');

+ 2 - 1
lib/Minz/Log.php

@@ -55,7 +55,8 @@ class Minz_Log {
 				$level_label = 'debug';
 				break;
 			default :
-				$level_label = 'unknown';
+				$level = LOG_INFO;
+				$level_label = 'info';
 			}
 
 			$log = '[' . date('r') . ']'