Browse Source
			
			
			log to $datadir/audit.log by default and add rotation
			
				
		log to $datadir/audit.log by default and add rotation
	
		
	
			
				Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>pull/9293/head
							committed by
							
								 Morris Jobke
								Morris Jobke
							
						
					
				
				
				  
				  No known key found for this signature in database
				  
				  	
						GPG Key ID: FE03C3A163FEDE68
				  	
				  
				
			
		
		
		
	
				 10 changed files with 144 additions and 18 deletions
			
			
		- 
					3apps/admin_audit/appinfo/info.xml
- 
					1apps/admin_audit/composer/composer/autoload_classmap.php
- 
					1apps/admin_audit/composer/composer/autoload_static.php
- 
					4apps/admin_audit/lib/AppInfo/Application.php
- 
					52apps/admin_audit/lib/BackgroundJobs/Rotate.php
- 
					1lib/composer/composer/autoload_classmap.php
- 
					1lib/composer/composer/autoload_static.php
- 
					26lib/private/Log/Rotate.php
- 
					71lib/public/Log/RotationTrait.php
- 
					2settings/Controller/LogSettingsController.php
| @ -0,0 +1,52 @@ | |||
| <?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 OCA\AdminAudit\BackgroundJobs; | |||
| 
 | |||
| use OC\BackgroundJob\TimedJob; | |||
| use OCP\Log\RotationTrait; | |||
| 
 | |||
| class Rotate extends TimedJob { | |||
| 	use RotationTrait; | |||
| 
 | |||
| 	public function __construct() { | |||
| 		$this->setInterval(60*60*3); | |||
| 	} | |||
| 
 | |||
| 	protected function run($argument) { | |||
| 		$config = \OC::$server->getConfig(); | |||
| 		$default = $config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/audit.log'; | |||
| 		$this->filePath = $config->getAppValue('admin_audit', 'logfile', $default); | |||
| 
 | |||
| 		if($this->filePath === '') { | |||
| 			// default log file, nothing to do
 | |||
| 			return; | |||
| 		} | |||
| 
 | |||
| 		$this->maxSize = $config->getSystemValue('log_rotate_size', 100 * 1024 * 1024); | |||
| 
 | |||
| 		if($this->shouldRotateBySize()) { | |||
| 			$this->rotate(); | |||
| 		} | |||
| 	} | |||
| } | |||
| @ -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; | |||
| 	} | |||
| 
 | |||
| } | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue