poco框架:日志相关知识和使用方法

当我们设计后台程序时,日志是获知程序的唯一的维护手段,所以日志很重要,是程序稳定运行和维护升级的唯一通道。

在我用过的日志框架中,poco提供的日志方法,简单明了,使用方便,很值得推广使用。

一 能过简单的例子,学会初步使用

下面是使用的例子,主要是先学会简单的使用方法,然后再好好理清这些知识点:

#include "Poco/FileChannel.h"
#include "Poco/Message.h"

using Poco::Logger;
using Poco::PatternFormatter;
using Poco::FormattingChannel;
using Poco::ConsoleChannel;
using Poco::FileChannel;
using Poco::Message;

int main(int argc, char** argv)
{
   //终端日志纪录
    FormattingChannel* pFCConsole = new FormattingChannel(new PatternFormatter("%s: %p: %t"));
    pFCConsole->setChannel(new ConsoleChannel);
    pFCConsole->open();
    //文件日志纪录
    FormattingChannel* pFCFile = new FormattingChannel(new PatternFormatter("%Y-%m-%d %H:%M:%S.%c %N[%P]:%s:%q:%t"));
    pFCFile->setChannel(new FileChannel("sample.log"));
    pFCFile->open();

    // 建立两种日志的对象
    Logger& consoleLogger = Logger::create("ConsoleLogger", pFCConsole, Message::PRIO_INFORMATION);
    Logger& fileLogger    = Logger::create("FileLogger", pFCFile, Message::PRIO_WARNING);

    // 纪录错误日志
    consoleLogger.error("An error message");
    fileLogger.error("An error message");
    //纪录报警日志 
    consoleLogger.warning("A warning message");
    fileLogger.error("A warning message");
   //纪录信息日志 
    consoleLogger.information("An information message");
    fileLogger.information("An information message");
    //方法二
    poco_information(consoleLogger, "Another informational message");
    poco_warning_f2(consoleLogger, "A warning message with arguments: %d, %d", 1, 2);
    //方法三
    Logger::get("ConsoleLogger").error("Another error message");
  
    return 0;
}

程序的运行结果:

终端上输出:

ConsoleLogger: Error: An error message
ConsoleLogger: Warning: A warning message
ConsoleLogger: Information: An information message
ConsoleLogger: Information: Another informational message
ConsoleLogger: Warning: A warning message with arguments: 1, 2
ConsoleLogger: Error: Another error message

日志文件sample.log

2015-09-28 15:28:31.3 linuxer-Rev-1-0:FileLogger:E:An error message
2015-09-28 15:28:31.3 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-09-28 15:33:15.3 linuxer-Rev-1-0:FileLogger:E:An error message
2015-09-28 15:33:15.3 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-09-28 15:33:25.5 linuxer-Rev-1-0:FileLogger:E:An error message
2015-09-28 15:33:25.5 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-09-28 15:33:26.8 linuxer-Rev-1-0:FileLogger:E:An error message
2015-09-28 15:33:26.8 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-09-28 15:34:46.3 linuxer-Rev-1-0:FileLogger:E:An error message
2015-09-28 15:34:46.3 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-09-28 15:43:58.3 linuxer-Rev-1-0:FileLogger:E:An error message
2015-09-28 15:43:58.3 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-10-14 12:58:46.6 linuxer-Rev-1-0:FileLogger:E:An error message
2015-10-14 12:58:46.6 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-10-14 13:36:46.3 linuxer-Rev-1-0:FileLogger:E:An error message
2015-10-14 13:36:46.3 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-10-14 13:36:47.7 linuxer-Rev-1-0:FileLogger:E:An error message
2015-10-14 13:36:47.7 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-10-14 13:36:48.8 linuxer-Rev-1-0:FileLogger:E:An error message
2015-10-14 13:36:48.8 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-10-14 13:36:49.2 linuxer-Rev-1-0:FileLogger:E:An error message
2015-10-14 13:36:49.2 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-10-14 13:36:49.5 linuxer-Rev-1-0:FileLogger:E:An error message
2015-10-14 13:36:49.5 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-10-14 13:36:49.7 linuxer-Rev-1-0:FileLogger:E:An error message
2015-10-14 13:36:49.7 linuxer-Rev-1-0:FileLogger:E:A warning message
2015-10-14 13:36:51.1 linuxer-Rev-1-0:FileLogger:E:An error message
2015-10-14 13:36:51.1 linuxer-Rev-1-0:FileLogger:E:A warning message

二 其它知识点(待续)

时间: 2024-10-14 12:07:53

poco框架:日志相关知识和使用方法的相关文章

Java复习第三天---集合框架的相关知识

集合框架总览: Collection 接口常用方法 //1.add()向集合中添加数据 c.add(apple01); c.add(apple02); c.add(apple03); c.add(apple04); c.add(apple05); //2.isEmepty()检测当前集合是否为空 boolean empty = c.isEmpty(); System.out.println("is empty:"+empty); //3.size()返回当前集合的长度 int size

集合类框架_List相关知识

集合类框架是java中比较中重要的框架之一,在Thinking in Java中集合又称为容器. 这篇博文先介绍下List相关知识.List是用于存储序列,它是一个独立的元素序列,这些元素都服从一条或多条规则.List又分为:ArrayList.LinkedList和Vector,而List又属于Collection容器类库. 1.做Java开发,List肯定用过,你都用过哪些List的实现类呢? ArrayList和LinkedList 2.ArrayList和LinkList的底层实现么?

黑马程序员---Objective-C基础学习---类、对象、方法相关知识笔记

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 类.对象.方法相关知识笔记 Objective-C相对于C语言有了面向对象的特性,但是ObjC又没有其他面向对象语言那么多语法特性,ObjC本身对面向对象进行了精简.下面是一些相关知识笔记. 类定义 成员变量 方法和属性 self关键字 类定义 在C#.Java等其他高级语言中定义一个类是相当简单点的,直接一个关键字class加一对大括号基本就完成了,但是在ObjC中类的定义相对变化比较大.现

Logback相关知识汇总

例如:%-4relative 表示,将输出从程序启动到创建日志记录的时间 进行左对齐 且最小宽度为4格式修饰符,与转换符共同使用:可选的格式修饰符位于“%”和转换符之间.第一个可选修饰符是左对齐 标志,符号是减号“-”:接着是可选的最小宽度 修饰符,用十进制数表示.如果字符小于最小宽度,则左填充或右填充,默认是左填充(即右对齐),填充符为空格.如果字符大于最小宽度,字符永远不会被截断.最大宽度 修饰符,符号是点号"."后面加十进制数.如果字符大于最大宽度,则从前面截断.点符号“.”后面

JVM的相关知识整理和学习--(转载)

JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理.冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操作码和地址码组成,操作码决定了操作类型和所操作的数的数字类型,地址码则指出地址码和操作数.从dos到window8,从unix到ubuntu和CentOS,还有MAC OS等等,不同的操作系统指令集以及数据结构都有着差异,而JVM通过在操作系统上建立虚拟机,自己定义出来的一套统一的数据结构和操作指令

转自牛客网-JVM的相关知识整理和学习

JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理.冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操作码和地址码组成,操作码决定了操作类型和所操作的数的数字类型,地址码则指出地址码和操作数.从dos到window8,从unix到ubuntu和CentOS,还有MAC OS等等,不同的操作系统指令集以及数据结构都有着差异,而JVM通过在操作系统上建立虚拟机,自己定义出来的一套统一的数据结构和操作指令

JVM的相关知识整理和学习----转载(很好的JVM文章)

JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理.冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操作码和地址码组成,操作码决定了操作类型和所操作的数的数字类型,地址码则指出地址码和操作数.从dos到window8,从unix到ubuntu和CentOS,还有MAC OS等等,不同的操作系统指令集以及数据结构都有着差异,而JVM通过在操作系统上建立虚拟机,自己定义出来的一套统一的数据结构和操作指令

深入浅出安卓学习相关知识,如何从零学好移动开发

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mobile-develop 由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向. 有不少同学问我如何学习安卓,要学些什么,难不难学.之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学.因为我觉得准确回答一个类似这样的问题往往需要灵感.现在根据我的学习体验,做个大概的总结. 1.我为什么学安卓 我从刚开始接触安卓开发到现在也有两三年的时间了

Exchange 2010 集线器传输相关知识

集线器传输相关知识 远程域 可帮助管理大多数自动邮件类型的邮件流,包括外出时的助理程序,自动回复自动转发.发送报告.未送达的提示,默认用户自己设置 接受的域 接受域有两种类型,一个是权威接受域,一个是中继接受域.默认情况下,森林的根域自动成为权威接受域.Exchange Server只会接收发送给接受域列表中列出的邮件域的邮件,或者做中继.通常企业内部域名与外部域名不同的情况下,我们需要创建外部域名的接受域,以使得Exchange Server能够处理发给外网域名的邮件.例如本文中我们默认的域为