summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
-rw-r--r--lib/private/Log/Rotate.php26
-rw-r--r--lib/public/Log/RotationTrait.php71
4 files changed, 83 insertions, 16 deletions
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 8bb8497eaa8..6f8c4131546 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -242,6 +242,7 @@ return array(
'OCP\\Log\\IFileBased' => $baseDir . '/lib/public/Log/IFileBased.php',
'OCP\\Log\\ILogFactory' => $baseDir . '/lib/public/Log/ILogFactory.php',
'OCP\\Log\\IWriter' => $baseDir . '/lib/public/Log/IWriter.php',
+ 'OCP\\Log\\RotationTrait' => $baseDir . '/lib/public/Log/RotationTrait.php',
'OCP\\Mail\\IAttachment' => $baseDir . '/lib/public/Mail/IAttachment.php',
'OCP\\Mail\\IEMailTemplate' => $baseDir . '/lib/public/Mail/IEMailTemplate.php',
'OCP\\Mail\\IMailer' => $baseDir . '/lib/public/Mail/IMailer.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 7faa6df8228..92726f7789d 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -272,6 +272,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Log\\IFileBased' => __DIR__ . '/../../..' . '/lib/public/Log/IFileBased.php',
'OCP\\Log\\ILogFactory' => __DIR__ . '/../../..' . '/lib/public/Log/ILogFactory.php',
'OCP\\Log\\IWriter' => __DIR__ . '/../../..' . '/lib/public/Log/IWriter.php',
+ 'OCP\\Log\\RotationTrait' => __DIR__ . '/../../..' . '/lib/public/Log/RotationTrait.php',
'OCP\\Mail\\IAttachment' => __DIR__ . '/../../..' . '/lib/public/Mail/IAttachment.php',
'OCP\\Mail\\IEMailTemplate' => __DIR__ . '/../../..' . '/lib/public/Mail/IEMailTemplate.php',
'OCP\\Mail\\IMailer' => __DIR__ . '/../../..' . '/lib/public/Mail/IMailer.php',
diff --git a/lib/private/Log/Rotate.php b/lib/private/Log/Rotate.php
index 48b96c98a8d..cc41c804ad3 100644
--- a/lib/private/Log/Rotate.php
+++ b/lib/private/Log/Rotate.php
@@ -24,7 +24,7 @@
*/
namespace OC\Log;
-use OCP\ILogger;
+use OCP\Log\RotationTrait;
/**
* This rotates the current logfile to a new name, this way the total log usage
@@ -33,23 +33,17 @@ use OCP\ILogger;
* location and manage that with your own tools.
*/
class Rotate extends \OC\BackgroundJob\Job {
- private $max_log_size;
+ use RotationTrait;
+
public function run($dummy) {
$systemConfig = \OC::$server->getSystemConfig();
- $logFile = $systemConfig->getValue('logfile', $systemConfig->getValue('datadirectory', \OC::$SERVERROOT . '/data') . '/nextcloud.log');
- $this->max_log_size = \OC::$server->getConfig()->getSystemValue('log_rotate_size', 100 * 1024 * 1024);
- if ($this->max_log_size) {
- $filesize = @filesize($logFile);
- if ($filesize >= $this->max_log_size) {
- $this->rotate($logFile);
- }
- }
- }
+ $this->filePath = $systemConfig->getValue('logfile', $systemConfig->getValue('datadirectory', \OC::$SERVERROOT . '/data') . '/nextcloud.log');
- protected function rotate($logfile) {
- $rotatedLogfile = $logfile.'.1';
- rename($logfile, $rotatedLogfile);
- $msg = 'Log file "'.$logfile.'" was over '.$this->max_log_size.' bytes, moved to "'.$rotatedLogfile.'"';
- \OCP\Util::writeLog(Rotate::class, $msg, ILogger::WARN);
+ $this->maxSize = \OC::$server->getConfig()->getSystemValue('log_rotate_size', 100 * 1024 * 1024);
+ if($this->shouldRotateBySize()) {
+ $rotatedFile = $this->rotate();
+ $msg = 'Log file "'.$this->filePath.'" was over '.$this->maxSize.' bytes, moved to "'.$rotatedFile.'"';
+ \OC::$server->getLogger()->warning($msg, ['app' => Rotate::class]);
+ }
}
}
diff --git a/lib/public/Log/RotationTrait.php b/lib/public/Log/RotationTrait.php
new file mode 100644
index 00000000000..df42bfeff1f
--- /dev/null
+++ b/lib/public/Log/RotationTrait.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Log;
+
+/**
+ * Trait RotationTrait
+ *
+ * @package OCP\Log
+ *
+ * @since 14.0.0
+ */
+trait RotationTrait {
+
+ /**
+ * @var string
+ * @since 14.0.0
+ */
+ protected $filePath;
+
+ /**
+ * @var int
+ * @since 14.0.0
+ */
+ protected $maxSize;
+
+ /**
+ * @return string the resulting new filepath
+ * @since 14.0.0
+ */
+ protected function rotate():string {
+ $rotatedFile = $this->filePath.'.1';
+ rename($this->filePath, $rotatedFile);
+ return $rotatedFile;
+ }
+
+ /**
+ * @return bool
+ * @since 14.0.0
+ */
+ protected function shouldRotateBySize():bool {
+ if ((int)$this->maxSize > 0) {
+ $filesize = @filesize($this->filePath);
+ if ($filesize >= (int)$this->maxSize) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}