mirror of https://github.com/aria2/aria2
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)pull/1/head
parent
405c46277f
commit
31a01bd0a6
|
@ -1,3 +1,12 @@
|
||||||
|
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)
|
||||||
|
|
||||||
2008-05-31 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
2008-05-31 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
* src/BtRequestMessage.cc
|
* src/BtRequestMessage.cc
|
||||||
|
|
|
@ -48,7 +48,11 @@ Logger::LEVEL LogFactory::_logLevel = Logger::DEBUG;
|
||||||
Logger* LogFactory::getInstance() {
|
Logger* LogFactory::getInstance() {
|
||||||
if(logger == NULL) {
|
if(logger == NULL) {
|
||||||
SimpleLogger* slogger = new SimpleLogger();
|
SimpleLogger* slogger = new SimpleLogger();
|
||||||
slogger->openFile(filename);
|
if(filename != DEV_NULL) {
|
||||||
|
// don't open file DEV_NULL for performance sake.
|
||||||
|
// This avoids costly unecessary message formatting and write.
|
||||||
|
slogger->openFile(filename);
|
||||||
|
}
|
||||||
slogger->setLogLevel(_logLevel);
|
slogger->setLogLevel(_logLevel);
|
||||||
if(_consoleOutput) {
|
if(_consoleOutput) {
|
||||||
slogger->setStdout(Logger::NOTICE, true);
|
slogger->setStdout(Logger::NOTICE, true);
|
||||||
|
|
|
@ -55,23 +55,23 @@ namespace aria2 {
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define WRITE_LOG(LEVEL, MSG) \
|
#define WRITE_LOG(LEVEL, MSG) \
|
||||||
if(LEVEL >= _logLevel){\
|
if(LEVEL >= _logLevel && (stdoutField&LEVEL || file.is_open())) { \
|
||||||
va_list ap;\
|
va_list ap; \
|
||||||
va_start(ap, MSG);\
|
va_start(ap, MSG); \
|
||||||
writeFile(LEVEL, MSG, ap);\
|
writeFile(LEVEL, MSG, ap); \
|
||||||
flush();\
|
flush(); \
|
||||||
va_end(ap);\
|
va_end(ap); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define WRITE_LOG_EX(LEVEL, MSG, EX) \
|
#define WRITE_LOG_EX(LEVEL, MSG, EX) \
|
||||||
if(LEVEL >= _logLevel) {\
|
if(LEVEL >= _logLevel && (stdoutField&LEVEL || file.is_open())) { \
|
||||||
va_list ap;\
|
va_list ap; \
|
||||||
va_start(ap, EX);\
|
va_start(ap, EX); \
|
||||||
writeFile(LEVEL, MSG, ap);\
|
writeFile(LEVEL, MSG, ap); \
|
||||||
writeStackTrace(LEVEL, EX);\
|
writeStackTrace(LEVEL, EX); \
|
||||||
flush();\
|
flush(); \
|
||||||
va_end(ap);\
|
va_end(ap); \
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string SimpleLogger::DEBUG("DEBUG");
|
const std::string SimpleLogger::DEBUG("DEBUG");
|
||||||
|
@ -153,12 +153,11 @@ void SimpleLogger::writeLog(std::ostream& o, Logger::LEVEL level,
|
||||||
writeHeader(o, datestr, levelStr);
|
writeHeader(o, datestr, levelStr);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
char* res;
|
char buf[1024];
|
||||||
if(vasprintf(&res, std::string(Util::replace(msg, A2STR::CR_C, A2STR::NIL)+A2STR::LF_C).c_str(), apCopy) == -1) {
|
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, cannot allocate memory.\n";
|
o << "SimpleLogger error, failed to format message.\n";
|
||||||
} else {
|
} else {
|
||||||
o << res;
|
o << buf;
|
||||||
free(res);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
va_end(apCopy);
|
va_end(apCopy);
|
||||||
|
|
Loading…
Reference in New Issue