#include "log/ModSyslog.h"
#include "log/ModUdp.h"
#include "log/TcpLogger.h"
+#include "sbuf/SBuf.h"
CBDATA_CLASS_INIT(Logfile);
}
void
-logfileWrite(Logfile * lf, char *buf, size_t len)
+logfileWrite(Logfile * lf, const char *buf, size_t len)
{
lf->f_linewrite(lf, buf, len);
}
logfilePrintf(Logfile * lf, const char *fmt,...)
{
va_list args;
- char buf[8192];
- int s;
-
va_start(args, fmt);
-
- s = vsnprintf(buf, 8192, fmt, args);
-
- if (s > 8192) {
- s = 8192;
-
- if (fmt[strlen(fmt) - 1] == '\n')
- buf[8191] = '\n';
- }
-
- logfileWrite(lf, buf, (size_t) s);
+ static SBuf sbuf;
+ sbuf.clear();
+ sbuf.vappendf(fmt, args); // Throws on overflow. TODO: handle that better
+ logfileWrite(lf, sbuf.c_str(), sbuf.length());
va_end(args);
}
Logfile *logfileOpen(const char *path, size_t bufsz, int);
void logfileClose(Logfile * lf);
void logfileRotate(Logfile * lf, int16_t rotateCount);
-void logfileWrite(Logfile * lf, char *buf, size_t len);
+void logfileWrite(Logfile * lf, const char *buf, size_t len);
void logfileFlush(Logfile * lf);
void logfilePrintf(Logfile * lf, const char *fmt,...) PRINTF_FORMAT_ARG2;
void logfileLineStart(Logfile * lf);