log4clpus简单测试和配置文件说明

安装

 Logger:记录日志的句柄

Appender:用于指定内容的输出位置,如:控制台,文件、远程服务器等;一个 Logger 可添加多个 Appender,从而向多个地方输出日志。 Layout:用于指定日志输出的格式;每个Appender 需要设置一个 Layout

demo

#include "/home/wdy/Cplus/Logcpp/add.h"
#include "/home/wdy/Cplus/Logcpp/Log.h"
int add(int a,int b)
    {
      if (a==0 && b==0) 
	  LOG_WARN("a,b both are zero");
      else
         LOG_TRACE("a,b ------?");
     
      if(a >0)
        { 
          LOG_INFO("///");
        }
       return a+b;
        
    }

 

//-------add.cpp
int  add(int a,int b);

-------------------------------------------------------------------------------//
#include <log4cplus/logger.h>
#include <log4cplus/consoleappender.h>
#include <log4cplus/fileappender.h>
#include <log4cplus/layout.h>
#include <log4cplus/configurator.h>

#include "Log.h"

Logger logger = Logger::getInstance(LOG4CPLUS_TEXT("logmain"));

void InitLogger(bool daemonized)
{
        if (daemonized)
                PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("/your/path/log4cplusd.conf"));// shohu进程
        else
                PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("./log4cplus.conf"));//
}

#pragma once

#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>

using namespace log4cplus;
using namespace log4cplus::helpers;

 //global object
 extern Logger logger;

    // define some macros for simplicity
    #define LOG_TRACE(logEvent)                 LOG4CPLUS_TRACE(logger, logEvent)
    #define LOG_DEBUG(logEvent)                 LOG4CPLUS_DEBUG(logger, logEvent)
    #define LOG_INFO(logEvent)                  LOG4CPLUS_INFO(logger, logEvent)
    #define LOG_WARN(logEvent)                  LOG4CPLUS_WARN(logger, logEvent)
    #define LOG_ERROR(logEvent)                 LOG4CPLUS_ERROR(logger, logEvent)
    #define LOG_FATAL(logEvent)                 LOG4CPLUS_FATAL(logger, logEvent)

   extern void InitLogger(bool daemonized);
#include "/home/wdy/Cplus/Logcpp/Log.h"
#include <stdlib.h>
#include <iostream>
#include "add.h"

using namespace std;

int main(int argc, char **argv)
{
  InitLogger(false);
  cout << "OK" << endl;
  LOG_TRACE("trace");
  LOG_INFO("info");
  LOG_ERROR("error");
  int li_res = add(0,0);
  li_res = add(9,9);
  li_res = add(0,7);
}
CC = g++
INCLUDE = include
CFLAGS += -o3 -g -llog4cplus
CPP =  Log_main.cpp Log.cpp add.cpp
EXEC = test_log
all: 
        $(CC) $(CFLAGS) $(CPP)-o $(EXEC)

 配置文件

#配置文件
#ERROR 表明要输出的日志级别(FATAL, ERROR, WARN, INFO, DEBUG, TRACE,由高到低)如果定义为TRACE,则所有级别的日志都可以输出,如果定义为ERROR,则只能输出FATAL和ERROR,后面的file,errorFile是定义的输出文件
log4cplus.logger.logmain=ERROR,file,errorFile
#如果日志文件要带日期,则要定义成 log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.file=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.file.Threshold=TRACE
log4cplus.appender.file.CreateDirs=true
log4cplus.appender.file.Append=true
#定义日志文件名
log4cplus.appender.file.FilenamePattern=log/%d{yyyy-MM-dd}.log
log4cplus.appender.file.MaxHistory=1
log4cplus.appender.file.CleanHistoryOnStart=true
log4cplus.appender.file.RollOnClose=false
log4cplus.appender.file.layout=log4cplus::PatternLayout
#日志输出格式
log4cplus.appender.file.layout.ConversionPattern=%D{ %Y-%m-%d %H:%M:%S.%q} %5p %c: %m (%l)%n

# 错误文件Appender
log4cplus.appender.errorFile=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.errorFile.Threshold=ERROR
log4cplus.appender.errorFile.CreateDirs=true
log4cplus.appender.errorFile.Append=true
log4cplus.appender.errorFile.FilenamePattern=log/%d{yyyy-MM-dd}.error
log4cplus.appender.errorFile.MaxHistory=365
log4cplus.appender.errorFile.CleanHistoryOnStart=true
log4cplus.appender.errorFile.RollOnClose=false
log4cplus.appender.errorFile.layout=log4cplus::PatternLayout
log4cplus.appender.errorFile.layout.ConversionPattern=%D{ %Y-%m-%d %H:%M:%S.%q} %5p %c: %m (%l)%n

PatternLayout 格式说明

PatternLayout 是一种具有词法分析功能的布局器,优点类似正则表达式。以“%”作为开头的特殊预定义标识符,可以产生特殊的格式信息。PatternLayout 格式有以下选项:

“%%”,转义为%

“%c”,输出logger名称,如 logger.sublogger。也可以控制logger名称的显示层次,比如"%c{1}“时输出"logger”,其中数字表示层次

“%D”,显示本地时间,比如:“2021-06-30 18:55:45”,%d显示标准时间

可以通过%d{…}定义更详细的时间显示格式,大括号中可显示的预定义标识符如下

%a – 表示星期几的英文缩写形式,比如"Fri"

%A – 表示星期几的英文全称,比如"Friday"

%b – 表示月份的英文缩写形式,比如"Oct"

%B – 表示月份的英文全称,“October”

%c – 标准的日期+时间格式,如"Fri June 30 18:56:19 2021"

%d – 表示日期(1-31)

%H – 表示24小时格式的小时(0-23)

%I – 表示12小时格式的小时(1-12)

%p – 表示现在是上午还是下午,AM or PM

%j – 表示一年中的第几天(1-366)

%m – 表示月份(1-12)

%M – 表示分钟(0-59)

%S – 表示当前时刻的多少秒(0-59),如"32"

%q – 表示毫秒(0-999

%Q – 表示带小数毫秒(0-999.999),如 “430.732”

%U – 表示是今年的第几周,以周日为第一天开始计算(0-53)

%W – 表示是今年的第几周,以周一为第一天开始计算(0-53)

%w – 表示星期几,(0-6,星期天为0)

%x – 标准的日期格式,如"10/16/04"

%X – 标准的时间格式,如"19:02:34"

%y – 两位数的年份(0-99),如"21"表示2021年

%Y – 四位数的年份,如"2021"

%Z – 时区名,比如"GMT"

“%F”,输出当前记录器所在的文件名称,比如"main.cpp"

“%L”,输出当前记录器所在的文件行号,比如"51"

“%l”,输出当前记录器所在的文件名称和行号,比如"main.cpp:51"

“%m”,输出原始信息。

“%n”,换行符。

“%p”,输出LogLevel,比如"DEBUG"

“%t”,输出记录器所在的线程ID,比如 “1075298944”

“%x”,嵌套诊断上下文NDC (nested diagnostic context) 输出,从堆栈中弹出上下文信息,NDC可以用对不同源的log信息(同时地)交叉输出进行区分。

格式对齐,比如"%-10m"时表示左对齐,宽度是10,当然其它的控制字符也可以相同的方式来使用,比如"%-12d","%-5p"等等
 

//------------------------------------------------------------------------------------------------------------------------

参考文章

C++实现日志功能:log4cplus(Win10+VS2017)_爱看书的小沐的博客-CSDN博客_log4cplus

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值