log4cpp - 使用

#pragma once

#include "ThreadLock.h"

#include <string>

#include <cstdio>

#include <log4cpp/Category.hh>

#include <log4cpp/Appender.hh>

#include <log4cpp/FileAppender.hh>

#include <log4cpp/Priority.hh>

#include <log4cpp/PatternLayout.hh>

#include <log4cpp/RollingFileAppender.hh>

class QuoteLog

{

public:

static QuoteLog* getInstance();

void loginfo(const std::string& message);

void logdebug(const std::string& message);

void logwarn(const std::string& message);

void logerror(const std::string& message);

private:

QuoteLog();

~QuoteLog();

log4cpp::Category& m_root;

static bool initialized;

static CThreadLock creationLock;

};

---------------------------------------------------------------------------------------------------------------

#include "QuoteLog.h"

#include <iostream>

bool QuoteLog::initialized=false;

CThreadLock QuoteLog::creationLock;

QuoteLog* QuoteLog::getInstance() {

bool needUnlock=false;

if (!initialized) {

creationLock.Lock();

needUnlock=true;

}

static QuoteLog instance;

if (needUnlock) {

initialized=true;

creationLock.UnLock();

}

return &instance;

}

QuoteLog::QuoteLog() : m_root(log4cpp::Category::getRoot().getInstance("QuoteLog"))

{

log4cpp::PatternLayout* pLayout2 = new log4cpp::PatternLayout();

pLayout2->setConversionPattern("%d: %p : %m%n");

log4cpp::RollingFileAppender* rollfileAppender = new log4cpp::RollingFileAppender( "rollfileAppender","quote.log",5*1024,1);

rollfileAppender->setLayout(pLayout2);

m_root.addAppender(rollfileAppender);

m_root.setPriority(log4cpp::Priority::DEBUG);

}

void QuoteLog::loginfo(const std::string& message)

{

m_root.info(message);

}

void QuoteLog::logdebug(const std::string& message)

{

m_root.debug(message);

}

void QuoteLog::logwarn(const std::string& message)

{

m_root.warn(message);

}

void QuoteLog::logerror(const std::string& message)

{

m_root.error(message);

}

QuoteLog::~QuoteLog()

{

log4cpp::Category::shutdown();

}

log4cpp - 使用

时间: 2024-08-29 01:13:50

log4cpp - 使用的相关文章

log4cpp的初步使用

(1)下载log4cpp的工程,编译生成lib文件和dll库 http://sourceforge.net/projects/log4cpp/files/ (2)添加头文件 #include "log4cpp/Category.hh"#include "log4cpp/CategoryStream.hh"#include "log4cpp/FileAppender.hh"#include "log4cpp/BasicLayout.hh&

Log4cpp介绍及使用

Log4cpp是一个开源的C++类库,它提供了在C++程序中使用日志和跟踪调试的功能.使用log4cpp,能够非常便利地将日志或者跟踪调试信息写入字符流.内存字符串队列.文件.回滚文件.调试器.Windows日志.本地syslog和远程syslogserver中. 1.Log4cpp简单介绍 Log4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4j,并保持了API上的一致.其类似的支持库还包含Java(log4j),C++(log4cpp.log4cplus),C(l

Log4cpp配置文件及动态调整日志级别的方法

一.log4cpp概述 Log4cpp是一个开源的C++类库,它提供了C++程序中使用日志和跟踪调试的功能,它的优点如下: 提供应用程序运行上下文,方便跟踪调试: 可扩展的.多种方式记录日志,包括命令行.文件.回卷文件.内存.syslog服务器.Win事件日志等: 可以动态控制日志记录级别,在效率和功能中进行调整: 所有配置可以通过配置文件进行动态调整: 多语言支持,包括Java(log4j),C++(log4cpp.log4cplus),C(log4c),python(log4p)等: 二.原

log4cpp日志不能是溶液子体积

 我们的项目用途log4cpp由于日志输出模块,但在使用中发现,假设Services,或者是在Windows Server版本号.不会有一个正常的日志切削现象.该日志已被写入到文件中,持续,即使超过规定的文件大小.也不会分卷. log4cpp中切割日志的核心算法为:(如果同意的最大文件个数为4) 1.关闭xxx.log. 2.删除 xxx.log.4 3.是一个loop, 将xxx.log.3--->xxx.log.4,xxx.log.2--->xxx.log.3,xxx.log.1---

Log4cpp配置文件格式说明

Log4cpp配置文件格式说明 博客分类: log4cpp log4cpp log4cpp有3个主要的组件:categories(类别).appenders(附加目的地).和 layouts(布局),layout类控制输出日志消息的显示样式(看起来像什么).log4cpp当前提供以下layout格式: log4cpp::BasicLayout    // 以"时间戳 优先级(priority,下文介绍)                         // 类别(category,下文介绍)  

example of log4cpp properties configuration

log 的优先级别解读,参阅源码 log4cpp-0.3.5rc3/include/log4cpp/Priority.hh 由高到低 EMERGFATALALERTCRITERRORWARNNOTICEINFODEBUGNOTSET 对应到 Category 相应函数,参阅源码 log4cpp-0.3.5rc3/include/log4cpp/Category.hh Category::emerg()Category::fatal()Category::alert()Category::crit

log4cpp 日志库

说明 log4cpp编译安装的路径是/opt/log4cpp 问题:如何正确引入动态库 1.修改/etc/ld.so.conf文件,将/opt/log4cpp/lib添加到文件末尾,该文件主要被ldconfig指令用来搜索可共享的动态链接库 2.执行ldconfig,根据修改的文件内容,创建出动态装入程序所需的连接和缓存文件,提供给系统动态库调用 手动: g++ test.cpp -I/opt/log4cpp/include -L/opt/log4cpp/lib/ -llog4cpp -lpth

自定义Log4cpp的日志输出格式

// 1. 实例化一个PatternLayout对象 log4cpp::PatternLayout* pLayout = new log4cpp::PatternLayout(); // 2. 实例化一个RollingFileAppender对象 log4cpp::RollingFileAppender* rollingAppender = new log4cpp::RollingFileAppender("RollingFileAppender",path); pLayout->

log4cpp深度封装

简介 关于log4cpp的介绍与好处就不再赘言了,百度一搜一大把.主要是对于log4cpp的使用如果不封装一下,感觉还是挺麻烦的,例如不少函数名挺长的.所以自己动手把它的日常使用进行了封装,可以让使用log4cpp就像调用一句printf()函数一样简单快捷. 封装目标 不需要用一次就调用一次getInstance,只需要在main文件中引入一次即可 封装成需要使用时只需简短的一举logError("somelog") 就搞定 输出的日志内容包含:文件名,函数名,行号(通过以上函数调用