httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From poir...@apache.org
Subject svn commit: r916377 - in /httpd/httpd/trunk: CHANGES docs/manual/programs/rotatelogs.xml support/rotatelogs.c
Date Thu, 25 Feb 2010 18:00:43 GMT
Author: poirier
Date: Thu Feb 25 18:00:42 2010
New Revision: 916377

URL: http://svn.apache.org/viewvc?rev=916377&view=rev
Log:
Add -L option to create a hard link to the current log file.  

PR: 48761
Submitted by: <lindon orthanc.ca>
With additional changes by: poirier

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/docs/manual/programs/rotatelogs.xml
    httpd/httpd/trunk/support/rotatelogs.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=916377&r1=916376&r2=916377&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Thu Feb 25 18:00:42 2010
@@ -2,6 +2,9 @@
 
 Changes with Apache 2.3.7
 
+  *) support/rotatelogs: Add -L option to create a link to the current
+     log file.  PR 48761 [<lyndon orthanc.ca>, Dan Poirier]
+
   *) mod_ldap: Update LDAPTrustedClientCert to consistently be a per-directory
      setting only, matching most of the documentation and examples. 
      PR 46541 [Paul Reder, Eric Covener] 

Modified: httpd/httpd/trunk/docs/manual/programs/rotatelogs.xml
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/programs/rotatelogs.xml?rev=916377&r1=916376&r2=916377&view=diff
==============================================================================
--- httpd/httpd/trunk/docs/manual/programs/rotatelogs.xml (original)
+++ httpd/httpd/trunk/docs/manual/programs/rotatelogs.xml Thu Feb 25 18:00:42 2010
@@ -35,6 +35,7 @@
 
      <p><code><strong>rotatelogs</strong>
      [ -<strong>l</strong> ]
+     [ -<strong>L</strong> <var>linkname</var> ]
      [ -<strong>f</strong> ]
      [ -<strong>v</strong> ]
      <var>logfile</var>
@@ -53,6 +54,12 @@
 changes the GMT offset (such as for BST or DST) can lead to unpredictable
 results!</dd>
 
+<dt><code>-L</code> <var>linkname</var></dt>
+<dd>Causes a hard link to be made from the current logfile
+to the specified link name.  This can be used to watch
+the log continuously across rotations using a command like 
+<code>tail -F linkname</code>.</dd>
+
 <dt><code>-f</code></dt>
 <dd>Causes the logfile to be opened immediately, as soon as
 <code>rotatelogs</code> starts, instead of waiting for the

Modified: httpd/httpd/trunk/support/rotatelogs.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/support/rotatelogs.c?rev=916377&r1=916376&r2=916377&view=diff
==============================================================================
--- httpd/httpd/trunk/support/rotatelogs.c (original)
+++ httpd/httpd/trunk/support/rotatelogs.c Thu Feb 25 18:00:42 2010
@@ -89,6 +89,7 @@
     int verbose;
     const char *szLogRoot;
     int truncate;
+    const char *linkfile;
 };
 
 typedef struct rotate_status rotate_status_t;
@@ -115,7 +116,7 @@
         fprintf(stderr, "%s\n", reason);
     }
     fprintf(stderr,
-            "Usage: %s [-v] [-l] [-f] [-t] <logfile> "
+            "Usage: %s [-v] [-l] [-L linkname] [-f] [-t] <logfile> "
             "{<rotation time in seconds>|<rotation size>(B|K|M|G)} "
             "[offset minutes from UTC]\n\n",
             argv0);
@@ -139,7 +140,9 @@
             "when the file size\nis reached a new log is started. If the "
             "-t option is specified, the specified\nfile will be truncated "
             "instead of rotated, and is useful where tail is used to\n"
-            "process logs in real time.\n");
+            "process logs in real time.  If the -L option is specified, "
+            "a hard link will be\nmade from the current log file to the "
+            "specified filename.\n");
     exit(1);
 }
 
@@ -351,6 +354,20 @@
         status->pfile_prev = NULL;
     }
     status->nMessCount = 0;
+    if (config->linkfile) {
+        apr_file_remove(config->linkfile, status->pfile);
+        if (config->verbose) {
+            fprintf(stderr,"Linking %s to %s\n", status->filename, config->linkfile);
+        }
+        rv = apr_file_link(status->filename, config->linkfile);
+        if (rv != APR_SUCCESS) {
+            char error[120];
+            apr_strerror(rv, error, sizeof error);
+            fprintf(stderr, "Error linking file %s to %s (%s)\n",
+                    status->filename, config->linkfile, error);
+            exit(2);
+        }
+    }
 }
 
 /*
@@ -440,11 +457,14 @@
 
     apr_pool_create(&status.pool, NULL);
     apr_getopt_init(&opt, status.pool, argc, argv);
-    while ((rv = apr_getopt(opt, "lftv", &c, &optarg)) == APR_SUCCESS) {
+    while ((rv = apr_getopt(opt, "lL:ftv", &c, &optarg)) == APR_SUCCESS) {
         switch (c) {
         case 'l':
             config.use_localtime = 1;
             break;
+        case 'L':
+            config.linkfile = optarg;
+            break;
         case 'f':
             config.force_open = 1;
             break;



Mime
View raw message