C++日志系统log4cxx

这篇具有很好参考价值的文章主要介绍了C++日志系统log4cxx。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

log4cxx有三个主要组件:loggers(记录器),appenders(输出源)和layout(布局)。可以简单理解为日志类别,要输出的地方,输出形式。

Logger

创建Logger

Logger是有一个String类的名字识别的,且大小写敏感。
root logger是所有logger的祖先,是一直存在的, 通过Logger.getRootLogger()获得,并且不能通过名字获得。

在配置文件上:

log4j.logger.test=INFO,fa

log4j.appender.fa=org.apache.log4j.RollingFileAppender

在代码上

public static Logger Logger.getLogger(String name) 获得Logger

此时配置文件的“test”要和getLogger参数name保持一致。

如:LoggerPtr m_logger = log4cxx::Logger::getLogger("test");

或者是

配置文件上:log4j.rootLogger=Debug,fa

log4j.appender.fa=org.apache.log4j.RollingFileAppender

在使用代码是:LoggerPtr m_logger = log4cxx::Logger::getLogger("test");

此时在代码上getLogger的参数name可自定义,如自定义为“test”

Logger的日志级别

每个logger都被分配了一个日志级别(log level),用来控制日志信息的输出。 
所有的logger level及大小关系:
 Level.ALL < Level.DEBUG < Level.INFO < Level.WARN < Level.ERROR < Level.FATAL < Level.OFF
对应的函数有:LOG4CXX_TRACE、LOG4CXX_DEBUG、LOG4CXX_INFO、LOG4CXX_WARN、LOG4CXX_ERROR、LOG4CXX_FATAL
如:

    CString sText;
    WCHAR *wTemp = sText.GetBuffer(sText.GetLength());
    int size = WideCharToMultiByte( CP_ACP, 0, wTemp, -1, NULL,0, NULL, NULL );  
    char *pChar = new char[size+1]; 
    WideCharToMultiByte( CP_ACP, 0, wTemp, -1, pChar, size, NULL, NULL ); 
    sText.ReleaseBuffer();
    LOG4CXX_DEBUG(m_logger,pChar);

 Appenders

允许把日志输出到不同地方,如控制台、文件等,根据天数或文件大小产生新的文件,再或者可以以流的形式发送到其他地方等。

appender常见类

org.apache.log4j.ConsoleAppender        (控制台)
org.apache.log4j.FileAppender            (文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender     (文件大小达到指定尺寸时产生一个新的文件)
org.apache.log4j.WriterAppender          (将日志信息以流格式发送到任意指定的地方)
ConsoleAppender选项
Threshold = WARN : 指定日志信息的最低输出级别,默认为DEBUG
ImmediateFlush = true : 表示所有消息都被立即输出,设为false则不输出, 默认值为true
Target = System.err : 默认值是System.out
FileAppender选项
Threshold = WARD 
ImmediateFlush = true
Append = false : true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true
File = D:/logs/logging.log4j : 指定消息输出的文件目录名
 DailyRollingFileAppender选项
Threshold = WARD 
ImmediateFlush = true
Append = false
File = D:/logs/logging.log4j
DatePattern = '.'yyyy-MM : 每个月生成一个新的日志文件
              '.'yyyy-ww : 每周
              '.'yyyy-MM-dd:每天
              '.'yyyy-MM-dd-a:每天2次
              '.'yyyy-MM-dd-HH:每小时
              '.'yyyy-MM-dd-HH-mm : 每分钟

RollingFileAppender选项
Threshold = WARD 
ImmediateFlush = true
Append = false
File = D:/logs/logging.log4j
MaxFileSize = 100KB :文件达到该大小时,会自动滚动,即将原来的内容移到logging.log4j.1文件中
MaxBackupIndex = 2 : 指定可以产生滚动文件的最大数,例如,设为2则可以产生logging.log4j.1, logging.log4j.2两个滚动文件和一个log

配置模式:

log4j.appender.appenderName = className
log4j.appender.appenderName.Option1 = value1
...
log4j.appender.appenderName.optionN = valueN

Layouts

自定义日志输出格式,log4j.appender.appenderName后附加layouts来完成。
Layouts提供四种日志输出格式:
1. HTML样式 :  org.apache.log4j.HTMLLayout
2. 自由指定样式:org.apache.log4j.PatternLayout
3. 包含日志级别和信息字符串的样式:     org.apache.log4j.SimpleLayout
4. 包含日志产生的时间、线程、类别等信息:org.apache.log4j.TTCCLayout

HTMLLayout选项
LocaltionInfo = true : 输出java文件名和行号,默认值是false
Title = My Logging : 默认值是Log4j Log Messages
PatternLayout选项
ConversionPattern = %m%n : 设定以怎样的格式显示消息
格式化符号说明:
%p: 输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以指定格式,eg.%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r: 输出自应用程序启动到输出到该log信息耗费额毫秒数
%t: 输出产生该日志事件的线程名
%l:  输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名及在代码行中的行数。
     eg.test.TestLog4j.main(TestLog4j.java:10)。
%c: logger所属类的全名,最小长度是20,若名称长度小于20,默认右对齐。
%M: 输出产生日志信息的方法名
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m:输出logger的日志消息,eg.LOG4CXX_DEBUG(m_logger,"日志消息")
%n:输出一个回车换行符,windows平台为"\r\n",Unix平台为"\n"
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中
%%:输出一个"%"字符

另外,还可以在%与格式字符之间加上修饰符,来控制器最小长度、最大长度、文本对齐方式。如:
1) %-20c : "-"号表示左对齐
2) %.30c : 指定%c最大长度为30,若大于30,会将左边多出来的字符截掉,但小于30也不会补空格

配置文件例子

Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties属性文件。下面以properties属性文件,如log.properties文件文章来源地址https://www.toymoban.com/news/detail-600660.html

//增量的日志方式
log4j.rootLogger=INFO,fa
log4j.appender.fa=org.apache.log4j.RollingFileAppender
log4j.appender.fa.File=./Log/testlog.log
log4j.appender.fa.Append=true
log4j.appender.fa.MaxFileSize=1024KB
log4j.appender.fa.MaxBackupIndex=1000
log4j.appender.fa.layout=org.apache.log4j.PatternLayout
log4j.appender.fa.layout.ConversionPattern=%d %-5p %c - %m%n



每天一个日志
log4j.rootLogger=Debug,test
log4j.appender.test= org.apache.log4j.DailyRollingFileAppender
log4j.appender.test.layout= org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern= [ %d ] [%c] [ %p ]: %m %n
log4j.appender.test.File= ./logs/test.log
log4j.appender.test.DatePattern=-yyyy-MM-dd

到了这里,关于C++日志系统log4cxx的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【日志加载 log4j】

    2.编写配置 3.获取日志对象 4.1 Loggers 记录器 4.2 Appenders 输出源 4.3 Layouts 布局 5. 配置文件 log4j.properties

    2024年02月11日
    浏览(75)
  • Java中的Log4j是什么?如何使用Log4j进行日志管理

    Log4j是一个Java日志管理工具,它可以帮助开发者在应用程序中记录日志。它是由Apache软件基金会开发和维护的,已经成为Java开发中最流行的日志管理框架之一。 Log4j可以通过多种方式记录日志,包括控制台输出、文件输出、数据库存储等。此外,Log4j还提供了多种日志级别,

    2024年02月04日
    浏览(39)
  • Java日志框架JUL、Log4j、logback、log4j2使用

    随着软件系统的发展系统业务越来越多、逻辑越来越复杂、代码量越来越多,伴随着容易出现的bug也会越来越多,不论是开发测试阶段还是生产阶段都需要将这些错误及时的捕捉记录下来,方便解决这些问题,否则针对出现的异常无从下手;此时就需要一些日志框架来完成这

    2024年02月15日
    浏览(35)
  • 使用Log4j与log4j2配置mybatisplus打印sql日志

    环境:项目非完全spring项目,没有spring的配置文件。执行sql时老是不打印sql语句。因此进行修改,过程比较坎坷,记录一下。 我尝试使用log4j和log4j2进行配置 最终把这两种全部配置记录上 Log4j配置 如果项目用的是log4j需要进行配置打印sql的步骤 首先引入log4j的包 配置一下l

    2024年02月04日
    浏览(51)
  • 用Log4j 2记录日志

    下面代码示例的maven工程中的pom.xml文件中需要增加对Log4j 2的依赖: 配置说明参考文档 https://logging.apache.org/log4j/2.x/manual/configuration.html 配置文件中pattern的详细说明 例如,下面配置文件片段中用到了pattern: pattern的详细说明请参考: https://logging.apache.org/log4j/2.x/manual/layouts.ht

    2024年02月14日
    浏览(85)
  • log4j日志框架的使用

    log4j的配置文件可以理解成有2部分 1根日志记录器  2 各appender(输出源)配置 入口 loggerManager的静态代码块 在loggerManager的静态代码块中,完成对配置文件的读取和解析 然后组装成框架的Logger对象、appender对象完成初始化操作 当调用logger.info打印日志时,和logback的流程基本一样

    2024年02月04日
    浏览(47)
  • Log4j疯狂写日志问题排查

    最近有个 Java 系统上线后不久就收到了磁盘使用率告警,磁盘使用率已经超过了 90% 以上,并且磁盘使用率还在不停增长。 由于服务器磁盘被打满,导致了系统正常的业务日志无法继续打印,严重影响了系统的可靠性。 刚开始收到磁盘告警的时候,怀疑是日志级别问题,业务

    2024年02月13日
    浏览(57)
  • Mybatis日志Log4j与Logback

    目录 一、Log4j与Logback的区别? 发展历史和维护 二、Slf4j 依赖 三、Logback使用 logback.xml配置文件 四、Log4j使用 五、查看日志内容 发展历史和维护 Log4j是最早的Java日志框架之一,具有较长的历史;然而Log4j 1.x版本在性能和并发性方面存在一些限制,并且已经停止维护。 Logbac

    2024年02月12日
    浏览(73)
  • SpringCloud使用log4j日志框架教程

    上一篇文章我们介绍了《SpringCloud使用logback日志框架教程》,本文我们再来介绍下log4j2。 Log4j2是一款流行的Java日志框架,它提供了高度可配置的日志记录功能,支持多种不同的输出格式和目标,比如文件、控制台、数据库等等。Log4j2的设计目标是提供高性能、低延迟的日志

    2024年02月16日
    浏览(45)
  • Java 项目日志实例基础:Log4j

    点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ 介绍几个日志使用方面的基础知识。 1 Log4j 1、Log4j 介绍 Log4j(log for java)是 Apache 的一个开源项目,通过使用 Log4j,我们可以控制日志信息输出到日志文件、也可以控制每一条日志的输出格式

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包