作者简介:花想云 ,在读本科生一枚,C/C++领域新星创作者,新星计划导师,阿里云专家博主,CSDN内容合伙人…致力于 C/C++、Linux 学习。
专栏简介:本文收录于 C++项目——基于多设计模式下的同步与异步日志系统
相关专栏推荐:C语言初阶系列、C语言进阶系列 、C++系列、数据结构与算法、Linux
本项目实现的是一个多日志器日志系统
,主要实现的功能是让程序员能够轻松的将程序运行日志信息落地到指定位置
,且支持同步与异步
两种方式的日志落地方式。
项目的框架设计将项目分为以下几个模块来实现。
(具体模块在代码实现中详细讲解)
日志消息分为以下等级:
OFF
:关闭;DEBUG
:调式,调试时的关键信息输出;INFO
:提示,普通的提示性日志信息;WARN
:警告,不影响运行,但是需要注意的日志;ERROR
:错误,程序运行时出现错误的日志;FATAL
:致命,一般是代码导致程序无法正常运行的日志。时间
:描述本条日志输出的时间;线程ID
:描述本条日志是哪一个线程输出的;日志等级
:描述本条日志的等级;日志文件名
:描述本条日志在哪一个源码文件中输出的;日志行号
:描述本条日志在源码文件的哪一行输出的;日志数据
:本条日志的有效数据载荷。设置日志输出格式,并提供对日志消息格式化的功能。
系统的默认日志输出格式
:[%d{%H:%M:%S}][%t][%c][%f:%l][%p]%T%m%n
;
%d
表示日期,包含子格式 {%H:%M:%S}
;%t
表示线程ID;%c
表示日志器名称;%f
表示源码文件名;%l
表示源码行号;%p
表示日志级别;%m
表示主体消息;%n
表示换行;设计思想:设计不同的子类,不同的子类从日志消息中取出不同的数据进行处理。
标准输出
:表示将日志信息进行标准输出打印;日志文件输出
:表示将日志写入指定文件末尾;滚动文件输出
:当前以文件大小进行控制,当一个日志文件大小达到指定大小,则切换下一个文件进行输出;