summaryrefslogtreecommitdiff
path: root/support/rotatelogs.c
diff options
context:
space:
mode:
Diffstat (limited to 'support/rotatelogs.c')
-rw-r--r--support/rotatelogs.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/support/rotatelogs.c b/support/rotatelogs.c
index baad1b68..c6f99049 100644
--- a/support/rotatelogs.c
+++ b/support/rotatelogs.c
@@ -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) {