summaryrefslogtreecommitdiff
path: root/src/SimpleLogger.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-31 05:56:12 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-31 05:56:12 +0000
commit31a01bd0a67c43661e63e166956af9bfe629b7b9 (patch)
treeaac0c4c37b7f3a9cea351e1da4d42a48bd2bc6a2 /src/SimpleLogger.cc
parent405c46277fbfaac610f5344ef1c3749e264fde87 (diff)
2008-05-31 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Do not do write operation to /dev/null file. * src/LogFactory.cc * src/SimpleLogger.cc Replaced vasprintf with vsnprintf * src/SimpleLogger.cc (SimpleLogger::writeLog)
Diffstat (limited to 'src/SimpleLogger.cc')
-rw-r--r--src/SimpleLogger.cc41
1 files changed, 20 insertions, 21 deletions
diff --git a/src/SimpleLogger.cc b/src/SimpleLogger.cc
index 537cf24f..d4d8f9e0 100644
--- a/src/SimpleLogger.cc
+++ b/src/SimpleLogger.cc
@@ -55,23 +55,23 @@ namespace aria2 {
# endif
#endif
-#define WRITE_LOG(LEVEL, MSG) \
-if(LEVEL >= _logLevel){\
-va_list ap;\
-va_start(ap, MSG);\
-writeFile(LEVEL, MSG, ap);\
-flush();\
-va_end(ap);\
-}
+#define WRITE_LOG(LEVEL, MSG) \
+ if(LEVEL >= _logLevel && (stdoutField&LEVEL || file.is_open())) { \
+ va_list ap; \
+ va_start(ap, MSG); \
+ writeFile(LEVEL, MSG, ap); \
+ flush(); \
+ va_end(ap); \
+ }
-#define WRITE_LOG_EX(LEVEL, MSG, EX) \
-if(LEVEL >= _logLevel) {\
-va_list ap;\
-va_start(ap, EX);\
-writeFile(LEVEL, MSG, ap);\
-writeStackTrace(LEVEL, EX);\
-flush();\
-va_end(ap);\
+#define WRITE_LOG_EX(LEVEL, MSG, EX) \
+ if(LEVEL >= _logLevel && (stdoutField&LEVEL || file.is_open())) { \
+ va_list ap; \
+ va_start(ap, EX); \
+ writeFile(LEVEL, MSG, ap); \
+ writeStackTrace(LEVEL, EX); \
+ flush(); \
+ va_end(ap); \
}
const std::string SimpleLogger::DEBUG("DEBUG");
@@ -153,12 +153,11 @@ void SimpleLogger::writeLog(std::ostream& o, Logger::LEVEL level,
writeHeader(o, datestr, levelStr);
}
{
- char* res;
- if(vasprintf(&res, std::string(Util::replace(msg, A2STR::CR_C, A2STR::NIL)+A2STR::LF_C).c_str(), apCopy) == -1) {
- o << "SimpleLogger error, cannot allocate memory.\n";
+ char buf[1024];
+ if(vsnprintf(buf, sizeof(buf), std::string(Util::replace(msg, A2STR::CR_C, A2STR::NIL)+A2STR::LF_C).c_str(), apCopy) < 0) {
+ o << "SimpleLogger error, failed to format message.\n";
} else {
- o << res;
- free(res);
+ o << buf;
}
}
va_end(apCopy);