]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
merge from trunk:
authorJeff Trawick <trawick@apache.org>
Wed, 13 Dec 2006 12:11:56 +0000 (12:11 +0000)
committerJeff Trawick <trawick@apache.org>
Wed, 13 Dec 2006 12:11:56 +0000 (12:11 +0000)
rotatelogs: Improve error message for open failures.

PR: 39487
Submitted by: jorton
Reviewed by: trawick, jim, wrowe

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@486612 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
support/rotatelogs.c

diff --git a/CHANGES b/CHANGES
index 149d20c80fedb484b2228a45dc49e5538436d2ea..ac44ce83570557c5786c873158202d3f031a789f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
                                                         -*- coding: utf-8 -*-
 Changes with Apache 2.2.4
 
+  *) rotatelogs: Improve error message for open failures.  PR 39487.
+     [Joe Orton]
+
   *) mod_dbd: share per-request database handles across subrequests
      and internal redirects [Chris Darroch]
 
diff --git a/STATUS b/STATUS
index d85729bdf40b6b2c2a72e777be136250579620a0..3bc3c790d54fd4086973971e7ff5eac46ca11ad9 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -89,15 +89,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
       wrowe asks: isn't it time to make LogLevel directive parsing
                   reusable in the ap_config api?
 
-   * rotatelogs: Produce useful error messages for open() failures.
-     PR 39487
-     Trunk version of patch:
-       http://svn.apache.org/viewvc?view=rev&revision=478135
-       http://svn.apache.org/viewvc?view=rev&revision=485828
-     2.2.x version of patch:
-       Trunk version works.
-     +1: trawick, jim, wrowe
-
    * mod_proxy_balancer: Have the find_best_worker() function
     increment the elected counter, rather than requiring each
     ind lb method to do it, isolating what each lb method
index baad1b685b3381954ed7576f24c637a784159c2c..c6f990493858f0d46efccb34b256cb8051d3c7b0 100644 (file)
@@ -54,7 +54,7 @@
 #endif
 
 #define BUFSIZE         65536
-#define ERRMSGSZ        82
+#define ERRMSGSZ        128
 
 #ifndef MAX_PATH
 #define MAX_PATH        1024
@@ -188,6 +188,7 @@ int main (int argc, const char * const argv[])
 
         if (nLogFD == NULL) {
             int tLogStart;
+            apr_status_t rv;
 
             if (tRotation) {
                 tLogStart = (now / tRotation) * tRotation;
@@ -208,22 +209,28 @@ int main (int argc, const char * const argv[])
                 sprintf(buf2, "%s.%010d", szLogRoot, tLogStart);
             }
             tLogEnd = tLogStart + tRotation;
-            apr_file_open(&nLogFD, buf2, APR_READ | APR_WRITE | APR_CREATE | APR_APPEND,
-                          APR_OS_DEFAULT, pool);
-            if (nLogFD == NULL) {
+            rv = apr_file_open(&nLogFD, buf2, APR_WRITE | APR_CREATE | APR_APPEND,
+                               APR_OS_DEFAULT, pool);
+            if (rv != APR_SUCCESS) {
+                char error[120];
+
+                apr_strerror(rv, error, sizeof error);
+
                 /* Uh-oh. Failed to open the new log file. Try to clear
                  * the previous log file, note the lost log entries,
                  * and keep on truckin'. */
                 if (nLogFDprev == NULL) {
-                    fprintf(stderr, "1 Previous file handle doesn't exists %s\n", buf2);
+                    fprintf(stderr, "Could not open log file '%s' (%s)\n", buf2, error);
                     exit(2);
                 }
                 else {
                     nLogFD = nLogFDprev;
-                    sprintf(errbuf,
-                            "Resetting log file due to error opening "
-                            "new log file. %10d messages lost.\n",
-                            nMessCount);
+                    /* Try to keep this error message constant length
+                     * in case it occurs several times. */
+                    apr_snprintf(errbuf, sizeof errbuf,
+                                 "Resetting log file due to error opening "
+                                 "new log file, %10d messages lost: %-25.25s\n",
+                                 nMessCount, error);
                     nWrite = strlen(errbuf);
                     apr_file_trunc(nLogFD, 0);
                     if (apr_file_write(nLogFD, errbuf, &nWrite) != APR_SUCCESS) {