log4cxx日志记录

来源:互联网 发布:自动扫矿软件 编辑:程序博客网 时间:2024/04/30 11:12

      

       刚进入软件行业,正在学习过程中。
      写了一个最简单的关于日志记录的程序,该示例在功能上创建了一个日志服务,该日志可通过配置文件进行必要控制,并可以同时向文件和控制台输出信息,但是还有一点小问题没解决。

       log_multi.cpp中内容如下:

#include <string>

#include <iostream>

#include <log4cxx/logger.h>

#include <log4cxx/basicconfigurator.h>

#include <log4cxx/helpers/exception.h>

#include <log4cxx/propertyconfigurator.h>

using namespace std;

using namespace log4cxx;

class CLogInFile

{public:

        static LoggerPtr logger_Parse;

        static LoggerPtr logger_Record;

};

LoggerPtr CLogInFile::logger_Parse=Logger::getLogger("myparse.record");

LoggerPtr CLogInFile::logger_Record=Logger::getLogger("mypcap.record");

int main(int argc,char* argv[])

{

    string msg=_T("log_multi.properties");

    PropertyConfigurator::configure(msg);

       //日志记录级别在in log_multi.properties中已设定: logger_Parse -- WARN   logger_Record –INFO

     //只有日志请求的级别不小于已设定的级别时才会记录日志

//TRACE < DEBUG < INFO < WARN < ERROR < FATAL

//请求级别DEBUG <设定级别WARN下面第一个不会被记录

    LOG4CXX_DEBUG(CLogInFile::logger_Parse,"Parselog: debug information");

    LOG4CXX_ERROR(CLogInFile::logger_Parse,"Parselog: error information");//ERROE>WARN

    LOG4CXX_INFO(CLogInFile::logger_Record,"Pcaplog: World");

    LOG4CXX_WARN(CLogInFile::logger_Parse,"Parselog: warn information");

    return 0;

}

       log_multi.properties中内容如下:

log4j.rootLogger=TRACE,stdout,R

log4j.category.mypcap.record=INFO,stdout,R

log4j.category.myparse.record=WARN,stdout,R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d [%-5p],[%F:%L]-%m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=out.log

log4j.appender.R.MaxFileSize=3000KB

log4j.appender.R.MaxBackupIndex=5

log4j.appender.R.layout=org.apache.log4j.PatternLayout

       运行该程序如下:

[n@myname 1]$ g++ -c log_multi.cpp -o log_multi.o

[n@myname 1]$ g++ log_multi.o -o log_multi -llog4cxx

[n@myname 1]$ ./log_multi

2008-05-19 16:59:43,409 [ERROR],[log_multi.cpp:34]-Parselog: error information

2008-05-19 16:59:43,409 [ERROR],[log_multi.cpp:34]-Parselog: error information

2008-05-19 16:59:43,409 [INFO ],[log_multi.cpp:35]-Pcaplog: World

2008-05-19 16:59:43,409 [INFO ],[log_multi.cpp:35]-Pcaplog: World

2008-05-19 16:59:43,410 [WARN ],[log_multi.cpp:36]-Parselog: warn information

2008-05-19 16:59:43,410 [WARN ],[log_multi.cpp:36]-Parselog: warn information

[n@myname 1]$ vim out.log

    可看到out.log中也有相同的日志记录,该文件是在程序执行的过程中被创建的。

    日志被输出了两遍,不知道什么原因,希望哪位高手指点一下,不胜感激。