- 论坛徽章:
- 0
|
原帖由 ideawu 于 2009-3-13 15:33 发表 ![]()
谢谢楼主分享. 不过, log4cxx确实太庞大了, 根本就不是一个日志库的应有的庞大.
#include <log4cxx/logger.h>
#include <log4cxx/basicconfigurator.h>
#include <log4cxx/helpers/exception.h>
#include <log4cxx/propertyconfigurator.h>
// 定义日志级别, 与log4cxx的一一对应
typedef enum
{
ll_debug,
ll_info,
ll_error,
ll_warn,
ll_fatal
}TLogLevel;
extern log4cxx::LoggerPtr g_logger;
extern void log4cxx_write(TLogLevel level, const char* fmt, ...);
#define LOG_LENGTH_MAX 1024 // 一条日志的最大长度
#define LOG_DEBUG(fmt, ...) { if (g_logger->isDebugEnabled()) { log4cxx_write(ll_debug, fmt, ##__VA_ARGS__); }}
#define LOG_INFO(fmt, ...) { if (g_logger->isInfoEnabled()) { log4cxx_write(ll_info, fmt, ##__VA_ARGS__); }}
#define LOG_WARN(fmt, ...) { if (g_logger->isWarnEnabled()) { log4cxx_write(ll_warn, fmt, ##__VA_ARGS__); }}
#define LOG_ERROR(fmt, ...) { if (g_logger->isErrorEnabled()) { log4cxx_write(ll_error, fmt, ##__VA_ARGS__); }}
#define LOG_FATAL(fmt, ...) { if (g_logger->isFatalEnabled()) { log4cxx_write(ll_fatal, fmt, ##__VA_ARGS__); }}
#define DEBUG_ENABLED g_logger->isDebugEnabled |
log4cxx::LoggerPtr g_logger(log4cxx::Logger::getLogger("sub"));
bool LogInit(const char* conffile)
{
using namespace log4cxx;
PropertyConfigurator::configure(File(conffile));
return true;
}
void log4cxx_write(TLogLevel level, const char* fmt, ...)
{
va_list args;
va_start(args, fmt);
char log[LOG_LENGTH_MAX+1];
vsnprintf(log, sizeof(log)-1, fmt, args);
switch (level)
{
case ll_debug:
g_logger->debug(log);
break;
case ll_info:
g_logger->info(log);
break;
case ll_error:
g_logger->error(log);
break;
case ll_warn:
g_logger->warn(log);
break;
case ll_fatal:
default: // 无效级别作为fatal输出
g_logger->fatal(log);
break;
}
va_end(args);
} |
[ 本帖最后由 Aquester 于 2009-3-13 18:13 编辑 ] |
|