オープンソースログシステム-log 4 cplus(3)

9769 ワード

出力メッセージのフォーマットを制御する方法
      ,log4cplus     (Layouts)        ,log4cplus        Layouts,
   SimpleLayout、PatternLayout、 TTCCLayout。
1. SimpleLayout
, LogLevel "-"。
    /* step 1: Instantiate an appender object */
  //appender          log    .
    SharedObjectPtr _append (new ConsoleAppender());
    _append->setName("append for test");
    /* step 2: Instantiate a layout object */
    std::auto_ptr<
log4cplus::SimpleLayout> _layout(new log4cplus::SimpleLayout());
    /* step 3: Attach the layout object to the appender */
    _append->setLayout( _layout );
    /* step 4: Instantiate a logger object */
    Logger _logger = Logger::getInstance("test");
    /* step 5: Attach the appender object to the logger  */
    _logger.addAppender(_append);
     /* log activity */
    LOG4CPLUS_DEBUG(_logger, "This is the simple formatted log message...")
    ... ...
   

DEBUG - This is the simple formatted log message...
2. PatternLayout
, , ,
, ( conversion specifiers) , 。
PatternLayout:
    ... ...
    /* step 1: Instantiate an appender object */
    SharedObjectPtr _append (new ConsoleAppender());
    _append->setName("append for test");
  
    /* step 2: Instantiate a layout object */
    std::string pattern = "%d{%m/%d/%y %H:%M:%S}  - %m [%l]%n";
    std::auto_ptr<
PatternLayout> _layout(new PatternLayout(pattern));
    /* step 3: Attach the layout object to the appender */
    _append->setLayout( _layout );
    /* step 4: Instantiate a logger object */
    Logger _logger = Logger::getInstance("test_logger.subtest");
    /* step 5: Attach the appender object to the logger  */
    _logger.addAppender(_append);
     /* log activity */
    LOG4CPLUS_DEBUG(_logger, "teststr")
   
    ... ...
   

10/16/04 18:51:25  - teststr [main.cpp:51]
                  "pattern",                   ,    
。"pattern" , :
(1)     ,          。
(2) , "%" , 。
        ,log4cplus             ,        ,       ,    
pattern, :
(1)"%%",   %,  ,std::string pattern = "%%"    : "%"
(2)"%c", logger , std::string pattern ="%c" : "test_logger.subtest",
     logger , "%c{1}" "test_logger", 。
(3)"%D", , std::string pattern ="%D" :"2004-10-16 18:55:45",%d ,
     std::string pattern ="%d" "2004-10-16 10:55:45" ( 8 , 8 )。
     %d{...} , %d{%H:%M:%s} : : 。
     :
    
%a -- , , "Fri"
%A -- , "Friday"
%b -- , , "Oct"
%B -- ,"October"
%c -- + , "Sat Oct 16 18:56:19 2004"
%d -- (1-31)"16"
%H -- (0-23), "18"
%I -- (1-12), "6"
%j -- (1-366), "290"
%m -- (1-12), "10"
%M -- (0-59), "59"
%p -- , AM or PM
%q -- (0-999), "237"
%Q -- (0-999.999), "430.732"
%S -- (0-59), "32"
%U -- , (0-53), "41"
%w -- ,(0-6, 0), "6"
%W -- , (0-53), "41"
%x -- , "10/16/04"
%X -- , "19:02:34"
%y -- (0-99), "04"
%Y -- , "2004"
%Z -- , "GMT"
(4)"%F",              ,  std::string pattern ="%F"    : "main.cpp"
(5)"%L", , std::string pattern ="%L" : "51"
(6)"%l", , std::string pattern ="%L" :
     "main.cpp:51"
(7)"%m", , std::string pattern ="%m" : "teststr",
     LOG4CPLUS_DEBUG , 。
(8)"%n", ,
(9)"%p", LogLevel, std::string pattern ="%p" : "DEBUG"
(10)"%t", ID, std::string pattern ="%t" : "1075298944"
(11)"%x", NDC (nested diagnostic context) , ,NDC
      log ( ) , NDC 。
(12) , std::string pattern ="%-10m" , 10, "teststr   ",
      , "%-12d","%-5p" ( log4cplus
      "%-5p" LogLevel , )。
      
3. TTCCLayout
PatternLayout , , ID,Logger NDC
(consists of time, thread, Logger and nested diagnostic context information, hence the name),
( ?Logger "C" ! , )。
( ) pattern 。
TTCCLayout                GMT  ,           :
TTCCLayout::TTCCLayout(bool use_gmtime  = false)
             TTCCLayout:
    /* step 1: Instantiate an appender object */
    SharedObjectPtr _append (new ConsoleAppender());
    _append->setName("append for test");
    /* step 2: Instantiate a layout object */
    std::auto_ptr _layout(new TTCCLayout());
    /* step 3: Attach the layout object to the appender */
    _append->setLayout( _layout );
    /* step 4: Instantiate a logger object */
    Logger _logger = Logger::getInstance("test_logger");
    /* step 5: Attach the appender object to the logger  */
    _logger.addAppender(_append);
     /* log activity */
    LOG4CPLUS_DEBUG(_logger, "teststr")
   
    ... ...
   

10-16-04 19:08:27,501 [1075298944] DEBUG test_logger <> - teststr
				
TTCCLayout GMT :
    std::auto_ptr _layout(new TTCCLayout(true));
   
    ... ...
   

10-16-04 11:12:47,678 [1075298944] DEBUG test_logger <> - testst
       log         ,         log           。