예제 #1
0
파일: log.c 프로젝트: tiehuis/FastStack
///
// Main logging function.
///
void fsLog(int level, ...)
{
    if (level >= fsCurrentLogLevel) {
        wrote_data = true;

        int stat = isatty(fileno(fsLogStream));

        if (stat) {
            fprintf(fsLogStream, "\033[%dm", logLevelColorCode(level));
        }

        fprintf(fsLogStream, "[%s] [%s]: ", ctimeStr(), logLevelStr(level));

        if (stat) {
            fprintf(fsLogStream, "\033[0m");
        }

        va_list args;
        va_start(args, level);
        const char *format = va_arg(args, const char*);
        vfprintf(fsLogStream, format, args);
        va_end(args);

        fprintf(fsLogStream, "\n");
    }
예제 #2
0
std::string log_(const std::string &msg, LogLevel level,
                 const std::string &fileName, int lineNum)
{
    std::ostringstream logMsg;
    if (level == PRINT) // for normal printing without log formatting
    {
        logMsg << msg;
        return logMsg.str();
    }

#ifdef CONFIG_DEBUG_LOCAL
    if(level >= INFO and level < WARNING)
        logMsg << logLevelStr(level) << ":" << msg << std::endl;
    else
        logMsg << fileName << ":" <<
               lineNum << ":" << logLevelStr(level) << ":" << msg << std::endl;
#else
    logMsg <<  logLevelStr(level) << ":" << msg <<  std::endl;
#endif

    return logMsg.str();
}