搞一个日志库,找了资料发现 很多都是在unix环境下运行,要么就是这库比较大,
AderStep的 http://blog.csdn.net/gatieme/article/details/50603682 有详细的比较了几个日志库,有兴趣可以看下。
就想来了轻量级的吧,看了下发现c-log ,,简单呗。
//
1、找不到pthread.h ; 搜了下还真有unix下移植到win32的pthread, https://sourceware.org/pthreads-win32/
2、替换平台函数 e.g: __thread snprintf 之类的
#ifdef WIN32
#define AUTO_TLS __declspec(thread) ///< win 线程局部storage
#define snprintf _snprintf
#else
#define AUTO_TLS __thread
#endif
3、宏定义 可变参数
unix 下可比较方便的定义
#define MY_PRINT(fmt, args...) my_print(level, fmt, ##args)
win 下 貌似没有这种用法但是可以用VA_ARGS 替换一把,或者用其他 的方式, 方法是想出来的,搜出来的也行嘛,,,
#define MY_PRINT(fmt, ...) my_print(level, fmt, __VA_ARGS__)
然后 然后 就可以了。。。。
一下贴个 例子吧
#ifdef WIN32
#define LOG_WARN(log_fmt, ...) \
do{ \
WARN_W.log(LL_WARNING, "[%s:%d][%s] " log_fmt "\n", \
__FILE__, __LINE__, __FUNCTION__, __VA_ARGS__); \
} while (0)
#else
#define LOG_WARN(log_fmt, log_arg...) \
do{ \
WARN_W.log(LL_WARNING, "[%s:%d][%s] " log_fmt "\n", \
__FILE__, __LINE__, __FUNCTION__, ##log_arg); \
} while (0)
#endif