From 5978ddbec6920f372dc0af0702459b85bfb57b71 Mon Sep 17 00:00:00 2001
From: Andreas Fischer <bantu@owncloud.com>
Date: Sun, 20 Oct 2013 23:58:07 +0200
Subject: [PATCH] Try to create custom log file before falling back to default.

---
 lib/private/log/owncloud.php | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/lib/private/log/owncloud.php b/lib/private/log/owncloud.php
index 036c93cd8e..15cace88f4 100644
--- a/lib/private/log/owncloud.php
+++ b/lib/private/log/owncloud.php
@@ -35,7 +35,17 @@ class OC_Log_Owncloud {
 	public static function init() {
 		$defaultLogFile = OC_Config::getValue("datadirectory", OC::$SERVERROOT.'/data').'/owncloud.log';
 		self::$logFile = OC_Config::getValue("logfile", $defaultLogFile);
-		if (!file_exists(self::$logFile)) {
+
+		/*
+		* Fall back to default log file if specified logfile does not exist
+		* and can not be created. Error suppression is required in order to
+		* not end up in the error handler which will try to log the error.
+		* A better solution (compared to error suppression) would be checking
+		* !is_writable(dirname(self::$logFile)) before touch(), but
+		* is_writable() on directories used to be pretty unreliable on Windows
+		* for at least some time.
+		*/
+		if (!file_exists(self::$logFile) && !@touch(self::$logFile)) {
 			self::$logFile = $defaultLogFile;
 		}
 	}
-- 
GitLab