log4c编译与简单使用总结

一)解压下载的log4c-1.2.4.tar.gz源码,进入文件夹中,打开README,编译的过程能够按照里面的流程linux

$mkdir build;
$cd build
$../log4c-1.2.4/configure --prefix=/path/of/installation
$make 
$make install

假如咱们要安装的目录为/home/abc/a,则上面第三句则为shell

$../log3c-1.2.4/configure --prefix=/home/abc/a

若是你是为了在其余平台运行的话,好比ARM平台,则能够用以下指令app

$../log3c-1.2.4/configure --prefix=/home/abc/a --host=arm-linux --without-expat

    没加without--expat的话要在你的电脑安装适于交叉环境的expat才能正常编译。   ui

    这样执行出来的结果是多了一个build目录,这里面不只包含了Makefile文件,还包含了example生成的可执行文件,另外还在/home/abc/a下多了安装的log4c等文件,包含了运行库lib,头文件等.这个是本身编写程序运行的关键部分.debug

二)若是你只是想运行一个example下的文件的话,能够运行build中的example中的可执行文件,日志的输出配置是在log4crc中配置的,不用去修改example中的C语言源码再从新编译,从这个角度出现的话,能够体会一下log4crc配置日志代码的功能.
日志

三)下面介绍的是用学有源码example中的helloworld.c为咱们的主文件,编译可执行的文件.通常一个具体的有日志功能的工程包含下面几类文件:code

    1)用户自定义c语言源文件,*.c与*.h
ci

    2)log4c运行库文件与依赖头文件,这个看你我的存放的目录,像我以前的目录就是/home/abc/a中,里面的文件有
get

    咱们程序要用到的是lib中的动态连接库和include中的文件.源码

    3)log4crc文件,这个是配置输出的日志的格式等,通常一个最简单的可编译文件下最少有一个.c文件和一个log4crc文件.

在该目录下打开终端,输入以下开始编译

gcc -g -Wall -O0 helloworld.c -o helloworld -L/home/abc/a/lib -llog4c -I/home/abc/a/include

这样就会编译与功了.   

    4)修改一下log4crc文件,其余大部分的log4crc文件都是相似的,你能够打开文件,看有没有如下三句,若是没有的话,添加进去,有的话能够不会,可能有添加的是第一行.

<category name="log4c.examples.helloworld" priority="debug" appender = "stdout"/>
<appednder name="stdout" type="stream" layout="basis"/>
<layout name="basic" type="basic"/>

    5)运行程序

./helloworld

会输出以下的信息:

[stdout] ERROR    log4c.examples.helloworld - Hello World!

    到此,咱们的编译就自算完成了,其余的应用也是在这样的环境中添加更多的功能.祝各位好运.

附:Helloworld.c的程序

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <stdio.h>

#include "log4c.h"

int main(int argc, char** argv){
  int rc = 0;
  log4c_category_t* mycat = NULL;
  
  if (log4c_init()){
    printf("log4c_init() failed");
    rc = 1;  
  }else{
      mycat = log4c_category_get("log4c.examples.helloworld");

      log4c_category_log(mycat, LOG4C_PRIORITY_ERROR, "Hello World!");
    
    /* Explicitly call the log4c cleanup routine */
    if ( log4c_fini()){
      printf("log4c_fini() failed");
    }
  }
  return rc;
}
相关文章
相关标签/搜索