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
#endif
#define BUFSIZE 65536
-#define ERRMSGSZ 82
+#define ERRMSGSZ 128
#ifndef MAX_PATH
#define MAX_PATH 1024
if (nLogFD == NULL) {
int tLogStart;
+ apr_status_t rv;
if (tRotation) {
tLogStart = (now / tRotation) * tRotation;
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) {