AC_PREFIX_DEFAULT(/usr)
+dnl Check for blocxx
+AC_CHECK_LIB(blocxx, main,
+ AC_SUBST([LIBBLOCXX], ["-lblocxx"])
+ AC_DEFINE([HAVE_LIBBLOCXX], [1],
+ [Define if you have libblocxx]))
+
dnl Automake 1.11 enables silent compilation
dnl Disable it by "configure --disable-silent-rules" or "make V=1"
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
/*
- * Copyright (c) [2004-2011] Novell, Inc.
+ * Copyright (c) [2004-2012] Novell, Inc.
*
* All Rights Reserved.
*
#include <string>
#include <libxml/tree.h>
+#include "config.h"
+
+#ifdef HAVE_LIBBLOCXX
#include <blocxx/AppenderLogger.hpp>
#include <blocxx/FileAppender.hpp>
#include <blocxx/Logger.hpp>
#include <blocxx/LogMessage.hpp>
+#endif
#include "snapper/Log.h"
+#include "snapper/AppUtil.h"
namespace snapper
{
using namespace std;
- using namespace blocxx;
+#ifdef HAVE_LIBBLOCXX
+
+ using namespace blocxx;
static const String component = "libsnapper";
+#else
+
+ string filename;
+
+#endif
+
void createLogger(const string& name, const string& logpath, const string& logfile)
{
+#ifdef HAVE_LIBBLOCXX
+
if (logpath != "NULL" && logfile != "NULL")
{
String nm = name.c_str();
LogAppender::setDefaultLogAppender(logApp);
}
+
+#else
+
+ filename = logpath + "/" + logfile;
+
+#endif
}
bool
testLogLevel(LogLevel level)
{
+#ifdef HAVE_LIBBLOCXX
+
ELogLevel curLevel = LogAppender::getCurrentLogAppender()->getLogLevel();
switch (level)
default:
return curLevel >= E_FATAL_ERROR_LEVEL;
}
+
+#else
+
+ return level != DEBUG;
+
+#endif
}
logStreamClose(LogLevel level, const char* file, unsigned line, const char* func,
ostringstream* stream)
{
+#ifdef HAVE_LIBBLOCXX
+
ELogLevel curLevel = LogAppender::getCurrentLogAppender()->getLogLevel();
String category;
}
}
+#else
+
+ static const char* ln[4] = { "DEB", "MIL", "WAR", "ERR" };
+
+ string prefix = sformat("%s %s libsnapper(%d) %s(%s):%d", datetime(time(0), false, true).c_str(),
+ ln[level], getpid(), file, func, line);
+
+ FILE* f = fopen(filename.c_str(), "a");
+
+ string tmp = stream->str();
+
+ string::size_type pos1 = 0;
+
+ while (true)
+ {
+ string::size_type pos2 = tmp.find('\n', pos1);
+
+ if (pos2 != string::npos || pos1 != tmp.length())
+ fprintf(f, "%s - %s\n", prefix.c_str(), tmp.substr(pos1, pos2 - pos1).c_str());
+
+ if (pos2 == string::npos)
+ break;
+
+ pos1 = pos2 + 1;
+ }
+
+ fclose(f);
+
+#endif
+
delete stream;
}