POCO日志库使用示例

版权所有,转载时请注明作者和出处 http://blog.csdn.net/jmppok/article/details/25598483

Poco是一个开源的C++库,各方面功能比较全面,包括日志\多线程\文件系统\定时器\网络\配之文件等,同时使用也十分简单.

本文对其中的日志模块进行了简单的试用.

1.使用示例

	Poco::AutoPtr<Poco::Util::PropertyFileConfiguration> pConf =  new Poco::Util::PropertyFileConfiguration("log_conf.properties");
	Poco::Util::LoggingConfigurator log_configurator;
	log_configurator.configure(pConf);

	_log = &Poco::Logger::root();

	_log->debug("debug");

	_log->information("information");

	_log->warning("warning");

	_log->error("error");

	_log->fatal("fatal");

在代码中使用十分简单。

2.Log的配置文件

以上代码通过加载配置文件log_conf.propeties对其进行配置。

Poco本身对log配置文件似乎没有详细说明,不过可以通过阅读源代码总结出来。

下面是我整理的一个配置文件,其内容如下:

logging.formatters.f1.class = PatternFormatter
logging.formatters.f1.pattern = [%p %Y-%m-%d %H:%M:%S %i %P %I]\n%U:%u\n%t

logging.channels.c1.class = ConsoleChannel
logging.channels.c1.formatter = f1

logging.channels.c2.class = FileChannel
logging.channels.c2.formatter = f1
logging.channels.c2.path = ./sample.log
logging.channels.c2.rotation = daily

logging.channels.splitter.class = SplitterChannel
logging.channels.splitter.channels = c1,c2

logging.loggers.root.channel = splitter
logging.loggers.root.level = debug

可以看到配置文件分为5个部分:

1) 前两行 定义了一个formatter,就是定义了日志的输出格式:

[%p %Y-%m-%d %H:%M:%S %i %P %I]\n%U:%u\n%t

2)接下来两行定义了一个输出通道,输出的Console控制台,输出格式就是上面定一个的f1

3)  接下来4行定义了另一个输出通道,输出到文件,文件名是sample.log, 输出格式也是f1,。

logging.channels.c2.rotation = daily

rotation=daily意思是每天写一个文件。当然还可以设定文件大小,保存天数等。

具体可看最后的参考文章。

4) 接下来两行,把2) 3)定义的两个输出通道组合起来,成为一个splitter的通道。

5)最后两行,将splitter通道设定为日志root的通道,这样输出的日志会通过splitter分别送到console 和  file。

最后定义日志输出级别为debug。

更多可以参考:

POCO C++库学习和分析 -- 日志 (一)

POCO C++库学习和分析 -- 日志 (二)

POCO日志库使用示例,布布扣,bubuko.com

时间: 2024-08-06 21:01:32

POCO日志库使用示例的相关文章

golang高性能日志库zap配置示例

zap是uber开源的Go高性能日志库,gitlab地址 安装 go get -u go.uber.org/zap 请注意,zap仅支持两个最新的Go版本. 示例 简单示例 格式化输出 package main import ( "go.uber.org/zap" "time" ) func main() { // zap.NewDevelopment 格式化输出 logger, _ := zap.NewDevelopment() defer logger.Sync

C/C++ 开源库及示例代码

C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1.3 环形缓冲 2.1.4 多维数组 2.1.5 图 2.2 对容器的操作 2.3 字符串处理 2.3.1 字符集 2.3.2 字符串格式化 2.3.3 正则表达式 2.3.4 (其它) 2.4 内存相关 2.4.1 智能指针 2.4.2 内存池 2.5 时间 & 日期 2.6 编码 & 解码

基于Java的开源日志库log4j调研笔记

由于Hadoop生态链基本都是java开发的,所以在很多有关大数据处理的开源项目中,经常会看到log4j这个jar包. 本文旨在对它的用法做基本说明. 1. log4j是什么 从log4j的命名(log for java)不难看出,它是为java提供的日志库.具体而言,它是Apache基金会下的开源项目,它可在不修改应用程序代码的前提下,在程序运行时提供灵活的日志打印功能(当然,应用程序还是必须在代码中调用log4j进行打印,但程序发布后,可以通过配置文件控制日志输出目的地及允许输出的日志等级)

第三方日志库logrus使用

日志是程序中必不可少的一个环节,由于Go语言内置的日志库功能比较简洁,我们在实际开发中通常会选择使用第三方的日志库来进行开发.本文介绍了logrus这个日志库的基本使用. logrus介绍 Logrus是Go(golang)的结构化logger,与标准库logger完全API兼容. 它有以下特点: 完全兼容标准日志库,拥有七种日志级别:Trace, Debug, Info, Warning, Error, Fataland Panic. 可扩展的Hook机制,允许使用者通过Hook的方式将日志分

Go语言项目中使用zap日志库(翻译)

本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档. 在Go语言项目中使用Uber-go的Zap Logger 介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中,而不是应用程序控制台. 日志切割-能够根据文件大小.时间或间隔等来切割日志文件. 支持不同的日志级别.例如INFO,DEBUG,ERROR等. 能够打印基本信息,如调用文件/函数名和行号

Python日志库的用法

日志不管对于开发或者运维都是一项非常重要的东西,它可以用来排错,解决故障,统计分析等. 本文介绍python中的日志库的用法. 日志库:import logging 要用日志需要先定义以下东西: 获取日志名,比如 logging.getLogger(__name__) 定义Handler,比如 logging.FileHandler('/var/log/messages') 设置级别,比如 fh.setLevel(logging.DEBUG) 定义格式,比如 formatter = loggin

爆料喽!!!开源日志库Logger的使用秘籍

导读 日志对于开发来说是非常重要的,不管是调试数据查看.bug问题追踪定位.数据信息收集统计,日常工作运行维护等等,都大量的使用到.今天介绍著名开源日志库Logger的使用,库的地址:https://github.com/orhanobut/logger 在Android Studio中的gradle中加入,就可以引用依赖logger库: dependencies { compile 'com.orhanobut:logger:1.15' } Logger库能提供的功能: 线程的信息 类的信息

C++的开源跨平台日志库glog学习研究(一)

作为C++领域中为数不多的好用.高效的.跨平台的日志工具,Google的开源日志库glog也算是凤毛麟角了.glog 是一个C++实现的应用级日志记录框架,提供了C++风格的流操作. 恰巧趁着五一我也学习研究了这个glog库,写个总结如下.走过路过的的各位牛人.高手可以忽略这篇文章了. 从code.google.com下载源码(在这里),在Visual Studio 2010中打开工程,如下: 可见只有四个工程,其中libglog和libglog_static分别是Windows下的动态库和静态

C++的开源跨平台日志库glog学习研究(二)--宏的使用

上一篇从整个工程上简单分析了glog,请看C++的开源跨平台日志库glog学习研究(一),这一篇对glog的实现代码入手,比如在其源码中以宏的使用最为广泛,接下来就先对各种宏的使用做一简单分析. 1. 日志输出宏 这里我们以一条最简单的日至输出为例说明: LOG(WARNING) << "This is a warning message"; 这里LOG是一个宏,其定义如下(logging.h line 487): #define LOG(severity) COMPACT