免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3231 | 回复: 5
打印 上一主题 下一主题

log4cxx编译方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-13 14:10 |只看该作者 |倒序浏览
0、下载
http://logging.apache.org/log4cxx/   


1、先下载如下源代码包
apr-1.3.3.tar.bz2
apr-util-1.3.4.tar.bz2
apache-log4cxx-0.10.0.tar.gz

2、将上述包上传到同一个目录下

3、安装apr
安装步骤:
tar xjf apr-1.3.3.tar.bz2
cd apr-1.3.3
./configure --prefix=/usr/local/apr-1.3.3
make
make install


4、安装apr-util
安装步骤:
tar xjf apr-util-1.3.4.tar.bz2
cd apr-util-1.3.4
./configure --with-apr=<apr源代码所在目录,如:/root/apr-1.3.3> --prefix=/usr/local/apr-util-1.3.4
make
make install


4、安装log4cxx

安装步骤:
tar xzf apache-log4cxx-0.10.0.tar.gz
cd apache-log4cxx-0.10.0
./configure --with-apr=<apr源代码所在目录,如:/root/apr-1.3.3> --with-apr-util=<apr-util源代码所在目录> --prefix=/usr/local/apache-log4cxx-0.10.0
make
make install


5、打包二进制包
切换到/usr/local目录下,包文件名格式为:
apache-log4cxx-0.10.0-Linux发行版本-内核版本-libc版本-线程库版本.tar.gz


如:
apache-log4cxx-0.10.0-SuSE10-2.6.16-libc24-NPTL24.tar.gz


将/usr/local目录下的apr-1.3.3、apr-util-1.3.4和apache-log4cxx-0.10.0三个子目录打到包中,如:
tar czf apache-log4cxx-0.10.0-SuSE10-2.6.16-libc24-NPTL24.tar.gz apr-1.3.3 apr-util-1.3.4 apache-log4cxx-0.10.0

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
2 [报告]
发表于 2009-03-13 15:22 |只看该作者
不错, 谢谢分享

[ 本帖最后由 xinglp 于 2009-3-13 18:15 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-03-13 15:33 |只看该作者
谢谢楼主分享. 不过, log4cxx确实太庞大了, 根本就不是一个日志库的应有的庞大.

论坛徽章:
0
4 [报告]
发表于 2009-03-13 18:10 |只看该作者
原帖由 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 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-03-13 18:11 |只看该作者
封装成带变参的宏,使用起来更简单,如:
LOG_DEBUG("test is %x", "me");

论坛徽章:
0
6 [报告]
发表于 2009-03-13 18:22 |只看该作者

回复 #3 ideawu 的帖子

刚编译了log4cxx的静态库,太多依赖,又太庞大了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP