初识

  1. # 文件名:log4cplus.config
  2. log4cplus.rootLogger=WARN, MyFileAppender
  3. #根日志
  4. #第一个参数:日志级别
  5. #第二个参数:appender,这里选用的是文件Appender
  6. # 这里定义了两个日志,它们都继承rootLogger属性,并挂载在rootLogger下
  7. log4cplus.logger.MemoryCheck=INFO, MyConsoleAppender
  8. #MemoryCheck从rootlogger继承,又定义了自己的日志集别和appender
  9. #故最终它的日志级别为 INFO,日志同时输出到控制台和文件中
  10. log4cplus.logger.DatabaseOperations=ERROR
  11. # ----- 每个Appender可以设置日志的输出位置、路径、Layout等内容
  12. #Appender类型:输出到命令行
  13. log4cplus.appender.MyConsoleAppender=log4cplus::ConsoleAppender
  14. #输出格式
  15. log4cplus.appender.MyConsoleAppender.layout=log4cplus::PatternLayout
  16. log4cplus.appender.MyConsoleAppender.layout.ConversionPattern=[%-5p][%d] %m%n
  17. #Appender类型:输出到文件
  18. log4cplus.appender.MyFileAppender=log4cplus::RollingFileAppender
  19. #文件路径
  20. log4cplus.appender.MyFileAppender.File=logging.txt
  21. #指定文件大小阈值
  22. log4cplus.appender.MyFileAppender.MaxFileSize=16MB
  23. #指定日志文件回滚周期
  24. log4cplus.appender.MyFileAppender.MaxBackupIndex=1
  25. #输出格式
  26. log4cplus.appender.MyFileAppender.layout=log4cplus::PatternLayout
  27. log4cplus.appender.MyFileAppender.layout.ConversionPattern=[%-5p][%D{%Y/%m/%d %H:%M:%S:%q}][%-l][%t] %m%n

【读取配置文件的内容】
log4cplus提供一个类PropertyConfigurator来实现从文件读取配置,参数就是文件名。其他参数采用默认,初始化时使用

  1. log4cplus::initialize();
  2. log4cplus::PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log4cplus.config"));

用例

DailyRollingFileAppender

  1. # -配置logger对象
  2. #根的配置:log4cplus.rootLogger= [LogLevel],appenderName,appenderName,...
  3. #非根的配置:log4cplus.logger.logger_name= [LogLevel|INHERITED],appenderName,...
  4. log4cplus.rootLogger=ERROR, R
  5. # -配置输出位置
  6. log4cplus.appender.R=log4cplus::DailyRollingFileAppender
  7. #根据频度来决定是否转储的文件转储方式
  8. log4cplus.appender.R.File=./log/error.log
  9. #文件的路径
  10. log4cplus.appender.R.Schedule=HOURLY
  11. #存储频度。当超过该频度,后续 log 信息会另存到新文件中
  12. #MONTHLY(每月)、WEEKLY(每周)、DAILY(每日)、TWICE_DAILY(每两天)、HOURLY(每时)、MINUTELY(每分)
  13. log4cplus.appender.R.Append=true
  14. #缓冲刷新标识: 表示每向文件写一条记录就刷新一次缓存,否则直到 FileAppender 被关闭或文件缓存已满才更新文件
  15. #一般要设置true,这样类似程序崩溃的情况发生后,程序终止时刻之前的所有记录都会被正常保存
  16. #配置打印的格式
  17. log4cplus.appender.R.layout=log4cplus::PatternLayout
  18. log4cplus.appender.R.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S,%Q}] [%t] %-5p - %m%n[%p] 注释(7
  19. log4cplus.logger.test=TRACE, RR
  20. log4cplus.appender.RR=log4cplus::DailyRollingFileAppender
  21. log4cplus.appender.RR.File=./log/test.log
  22. log4cplus.appender.RR.Schedule=HOURLY
  23. log4cplus.appender.RR.MaxBackupIndex=192 #8 * 24 注释(6)
  24. #设置最大记录文件数,当记录文件数超过MaxBackupIndex+1(此处为193)时,会删除最早生成的文件
  25. #保证整个文件数目等于MaxBackupIndex+1。后面的注释#8*24意在说明此处设置实质上是记录八天以内的日志
  26. log4cplus.appender.RR.Append=true
  27. log4cplus.appender.RR.layout=log4cplus::PatternLayout
  28. log4cplus.appender.RR.layout.ConversionPattern=%p %D{%Y-%m-%d %H:%M:%S.%q}:%t %F:%L "%m"%n

TimeBasedRollingFileAppender

  1. log4cplus.rootLogger=ALL, LegendPrint_Run_LOG
  2. # 指定append类型,因为我们这需要按天来生成,同时文件名也要可以按时间来命名
  3. # 所以选择TimeBasedRollingFileAppender
  4. log4cplus.appender.LegendPrint_Run_LOG = log4cplus::TimeBasedRollingFileAppender
  5. # 指定文件路径名,可以是绝对路径也可以是相对路径,可以使用时间匹配符来动态定义文件名
  6. # log4Cplus会根据你使用到的时间自动创建文件。比如,你的文件名是由年月构成,那每个月都会生成新的文件。
  7. log4cplus.appender.LegendPrint_Run_LOG.FilenamePattern= log\ %d{yyyy-MM-dd}.log
  8. # 设置为true表示向日志文件中追加信息而不是截断。python
  9. log4cplus.appender.LegendPrint_Run_LOG.Append = true
  10. # 设置最大的文件数,超过这个数值删除时间最久的文件。
  11. log4cplus.appender.LegendPrint_Run_LOG.MaxHistory = 999
  12. # 当设置为true表示每一次有append event事件,输出流就会被刷新到文件中。
  13. log4cplus.appender.LegendPrint_Run_LOG.ImmediateFlush = true
  14. # 默认值为true关闭的时候回滚到一个新的文件中,有bug,我们设置为false,不使用这个功能。
  15. log4cplus.appender.LegendPrint_Run_LOG.RollOnClose = false
  16. # 如果为true,那么如果指定的日志路径名中如果有文件夹不存在,则会创建文件夹。
  17. log4cplus.appender.LegendPrint_Run_LOG.CreateDirs = true
  18. # 指定消息输出的格式
  19. log4cplus.appender.LegendPrint_Run_LOG.layout = log4cplus::PatternLayout
  20. log4cplus.appender.LegendPrint_Run_LOG.layout.ConversionPattern = %D{%Y-%m-%d %H:%M:%S,%q}: %-5p %m%n
  21. # 指定消息输出的级别,这边使用的是Range,指定范围,在这个范围内都可以使用
  22. log4cplus.appender.LegendPrint_Run_LOG.filters.1 = log4cplus::spi::LogLevelRangeFilter
  23. log4cplus.appender.LegendPrint_Run_LOG.filters.1.LogLevelMin = TRACE
  24. log4cplus.appender.LegendPrint_Run_LOG.filters.1.LogLevelMax = FATAL
  25. # 这里我们还可以使用LogLevelMatchFilter来指定消息输出级别
  26. # log4cplus.appender.LegendPrint_Error_LOG.filters.1=log4cplus::spi::LogLevelMatchFilter
  27. # log4cplus.appender.LegendPrint_Error_LOG.filters.1.LogLevelToMatch=ERROR
  28. # true表示如果匹配了filter指定的范围则输出,如果是false则反之。
  29. log4cplus.appender.LegendPrint_Run_LOG.filters.1.AcceptOnMatch = true
  30. # 表示清空过滤器的设置,这边设置的顺序和执行的顺序是相反的,即log4Cplus会先清空//然后再设置filter的级别。
  31. log4cplus.appender.LegendPrint_Run_LOG.filters.2 = log4cplus::spi::DenyAllFilter

同步

  1. # 定义了一个日志global。指定等级INFO,名为SA的Appender
  2. log4cplus.logger.global = INFO, SA
  3. # 指定Appender的类型:按频率回滚文件
  4. log4cplus.appender.SA=log4cplus::DailyRollingFileAppender
  5. # 指定频率:日更
  6. log4cplus.appender.SA.Schedule=HOURLY
  7. # 日期格式
  8. log4cplus.appender.SA.DatePattern=%Y-%m-%d:%H
  9. log4cplus.appender.SA.File= log_util.log
  10. # 最大的日志文件数量为MaxBackupIndex+1
  11. log4cplus.appender.SA.MaxBackupIndex=100
  12. # 缓冲区大小
  13. log4cplus.appender.SA.BufferSize=131072
  14. # 往后追加
  15. log4cplus.appender.SA.Append=true
  16. # 输出格式
  17. log4cplus.appender.SA.layout=log4cplus::PatternLayout
  18. log4cplus.appender.SA.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S,%Q} [%l] %-5p %m%n

异步

  1. log4cplus.logger.global = INFO, AA
  2. # 指定Appender的类型
  3. log4cplus.appender.AA=log4cplus::AsyncAppender
  4. # 队列的限制
  5. log4cplus.appender.AA.QueueLimit=10000
  6. log4cplus.appender.AA.Appender=log4cplus::DailyRollingFileAppender
  7. log4cplus.appender.AA.Appender.Schedule=HOURLY
  8. log4cplus.appender.AA.Appender.Threshold = INFO
  9. log4cplus.appender.AA.Appender.DatePattern=%Y-%m-%d-%H
  10. log4cplus.appender.AA.Appender.File=./logger_test.log
  11. log4cplus.appender.AA.Appender.ImmediateFlush=false
  12. log4cplus.appender.AA.Appender.MaxFileSize=1000MB
  13. log4cplus.appender.AA.Appender.MaxBackupIndex=100
  14. log4cplus.appender.AA.Appender.Append=true
  15. log4cplus.appender.AA.Appender.layout=log4cplus::PatternLayout
  16. log4cplus.appender.AA.Appender.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S,%Q} [%t] %-5p %m%n

示例一

  1. #配置文件(其它日志级别配置相同):
  2. log4cplus.logger.console=TRACE,logConsole
  3. log4cplus.logger.root=TRACE,ERROR_MSGS, DEBUG_MSGS, INFO_MSGS
  4. #不向默认对象(rootLogger)输出,因此信息只能输出到文件
  5. log4cplus.additivity.file=false
  6. ###############################CONSOLE##########################################
  7. log4cplus.appender.logConsole=log4cplus::ConsoleAppender
  8. log4cplus.appender.logConsole.Encoding=utf-8
  9. log4cplus.appender.logConsole.layout=log4cplus::PatternLayout
  10. log4cplus.appender.logConsole.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n
  11. ################################DEBUG####################################
  12. #设置日志追加到文件尾
  13. log4cplus.appender.DEBUG_MSGS=log4cplus::TimeBasedRollingFileAppender
  14. log4cplus.appender.DEBUG_MSGS.FilenamePattern=debug.%d{yyyyMMdd}.log
  15. log4cplus.appender.ERROR_MSGS.Schedule=DAILY
  16. log4cplus.appender.ERROR_MSGS.MaxHistory=365
  17. log4cplus.appender.DEBUG_MSGS.Append=true
  18. log4cplus.appender.DEBUG_MSGS.RollOnClose=false
  19. log4cplus.appender.DEBUG_MSGS.CreateDirs=true
  20. #设置日志文件大小
  21. log4cplus.appender.DEBUG_MSGS.MaxFileSize=10MB
  22. #设置生成日志最大个数
  23. log4cplus.appender.DEBUG_MSGS.MaxBackupIndex=5
  24. #设置编码
  25. log4cplus.appender.DEBUG_MSGS.Encoding=utf-8
  26. # 打印格式
  27. log4cplus.appender.DEBUG_MSGS.layout=log4cplus::PatternLayout
  28. log4cplus.appender.DEBUG_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n
  29. #匹配相同日志级别,只有wx_uservedio日志才输入到该文件中
  30. log4cplus.appender.DEBUG_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
  31. log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelToMatch=DEBUG
  32. log4cplus.appender.DEBUG_MSGS.filters.1.AcceptOnMatch=true
  33. log4cplus.appender.DEBUG_MSGS.filters.2=log4cplus::spi::DenyAllFilter
  34. ################################ERROR####################################
  35. #设置日志追加到文件尾
  36. log4cplus.appender.ERROR_MSGS=log4cplus::TimeBasedRollingFileAppender
  37. log4cplus.appender.ERROR_MSGS.FilenamePattern=error.%d{yyyyMMdd}.log
  38. log4cplus.appender.ERROR_MSGS.Schedule=DAILY
  39. log4cplus.appender.ERROR_MSGS.MaxHistory=365
  40. log4cplus.appender.ERROR_MSGS.Append=true
  41. log4cplus.appender.ERROR_MSGS.RollOnClose=false
  42. log4cplus.appender.ERROR_MSGS.CreateDirs=true
  43. #设置日志文件大小
  44. log4cplus.appender.ERROR_MSGS.MaxFileSize=10MB
  45. #设置生成日志最大个数
  46. log4cplus.appender.ERROR_MSGS.MaxBackupIndex=5
  47. log4cplus.appender.ERROR_MSGS.Encoding=utf-8
  48. log4cplus.appender.ERROR_MSGS.layout=log4cplus::PatternLayout
  49. #设置日志打印格式
  50. log4cplus.appender.ERROR_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m%n
  51. #匹配相同日志级别,只有wx_uservedio日志才输入到该文件中
  52. log4cplus.appender.ERROR_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
  53. log4cplus.appender.ERROR_MSGS.filters.1.LogLevelToMatch=ERROR
  54. log4cplus.appender.ERROR_MSGS.filters.1.AcceptOnMatch=true
  55. log4cplus.appender.ERROR_MSGS.filters.2=log4cplus::spi::DenyAllFilter
  56. ################################INFO####################################
  57. #设置日志追加到文件尾
  58. log4cplus.appender.INFO_MSGS=log4cplus::TimeBasedRollingFileAppender
  59. log4cplus.appender.INFO_MSGS.FilenamePattern=info.%d{yyyyMMdd}.log
  60. log4cplus.appender.INFO_MSGS.Schedule=DAILY
  61. log4cplus.appender.INFO_MSGS.MaxHistory=365
  62. log4cplus.appender.INFO_MSGS.Append=true
  63. log4cplus.appender.INFO_MSGS.RollOnClose=false
  64. log4cplus.appender.INFO_MSGS.CreateDirs=true
  65. #设置日志文件大小
  66. log4cplus.appender.INFO_MSGS.MaxFileSize=10MB
  67. #设置生成日志最大个数
  68. log4cplus.appender.INFO_MSGS.MaxBackupIndex=5
  69. log4cplus.appender.INFO_MSGS.Encoding=utf-8
  70. log4cplus.appender.INFO_MSGS.layout=log4cplus::PatternLayout
  71. #设置日志打印格式
  72. log4cplus.appender.INFO_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n
  73. #匹配相同日志级别,只有INFO日志才输入到该文件中
  74. log4cplus.appender.INFO_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
  75. log4cplus.appender.INFO_MSGS.filters.1.LogLevelToMatch=INFO
  76. log4cplus.appender.INFO_MSGS.filters.1.AcceptOnMatch=true
  77. log4cplus.appender.INFO_MSGS.filters.2=log4cplus::spi::DenyAllFilter

示例二

  1. log4cplus.rootLogger=DEBUG,ALL_MSGS,ERROR_MSGS
  2. log4cplus.appender.ALL_MSGS=log4cplus::DailyRollingFileAppender
  3. log4cplus.appender.ALL_MSGS.Schedule=DAILY
  4. #log4cplus.appender.ALL_MSGS.DatePattern=yyyy-MM-dd
  5. log4cplus.appender.ALL_MSGS.MaxFileSize=100MB
  6. log4cplus.appender.ALL_MSGS.MaxBackupIndex=10
  7. log4cplus.appender.ALL_MSGS.CreateDirs=true
  8. log4cplus.appender.ALL_MSGS.File=log.log
  9. log4cplus.appender.ALL_MSGS.layout=log4cplus::PatternLayout
  10. log4cplus.appender.ALL_MSGS.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S,%Q} %-4l [%t] %-5p %c{2} - %m%n
  11. #Range
  12. log4cplus.appender.ALL_MSGS.filters.1=log4cplus::spi::LogLevelRangeFilter
  13. log4cplus.appender.ALL_MSGS.filters.1.LogLevelMin=TRACE
  14. log4cplus.appender.ALL_MSGS.filters.1.LogLevelMax=FATAL
  15. log4cplus.appender.ALL_MSGS.filters.1.AcceptOnMatch=true
  16. log4cplus.appender.ALL_MSGS.filters.2=log4cplus::spi::DenyAllFilter
  17. log4cplus.appender.ERROR_MSGS=log4cplus::DailyRollingFileAppender
  18. log4cplus.appender.ERROR_MSGS.Schedule=DAILY
  19. #log4cplus.appender.ERROR_MSGS.DatePattern=yyyy-MM-dd
  20. log4cplus.appender.ERROR_MSGS.MaxFileSize=100MB
  21. log4cplus.appender.ERROR_MSGS.MaxBackupIndex=10
  22. log4cplus.appender.ERROR_MSGS.CreateDirs=true
  23. log4cplus.appender.ERROR_MSGS.File=error.log
  24. log4cplus.appender.ERROR_MSGS.layout=log4cplus::PatternLayout
  25. log4cplus.appender.ERROR_MSGS.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S,%Q} %-4l [%t] %-5p %c{2} - %m%n
  26. #Match
  27. log4cplus.appender.ERROR_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
  28. log4cplus.appender.ERROR_MSGS.filters.1.LogLevelToMatch=ERROR
  29. log4cplus.appender.ERROR_MSGS.filters.1.AcceptOnMatch=true
  30. log4cplus.appender.ERROR_MSGS.filters.2=log4cplus::spi::DenyAllFilter

日更、按等级分流

  1. #配置文件(其它日志级别配置相同):
  2. log4cplus.rootLogger=TRACE, DEBUG_MSGS, ERROR_MSGS, WARN_MSGS
  3. #DEBUG
  4. #设置日志追加到文件尾
  5. log4cplus.appender.DEBUG_MSGS=log4cplus::RollingFileAppender
  6. #设置每天记录一个日志文件
  7. log4cplus.appender.DEBUG_MSGS.Schedule=DAILY
  8. log4cplus.appender.DEBUG_MSGS.DatePattern=yyyy-MM-dd
  9. #设置日志文件大小
  10. log4cplus.appender.DEBUG_MSGS.MaxFileSize=100MB
  11. #设置生成日志最大个数
  12. log4cplus.appender.DEBUG_MSGS.MaxBackupIndex=10
  13. #设置输出日志路径
  14. log4cplus.appender.DEBUG_MSGS.File=/home/zhangshibo/log_test/log/debug.log
  15. log4cplus.appender.DEBUG_MSGS.layout=log4cplus::PatternLayout
  16. #设置日志打印格式
  17. log4cplus.appender.DEBUG_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}]%p%m%n
  18. #匹配相同日志级别,只有debug日志才输入到该文件中
  19. log4cplus.appender.DEBUG_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
  20. log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelToMatch=DEBUG
  21. log4cplus.appender.DEBUG_MSGS.filters.1.AcceptOnMatch=true
  22. log4cplus.appender.DEBUG_MSGS.filters.2=log4cplus::spi::DenyAllFilter
  23. #ERROR
  24. #设置日志追加到文件尾
  25. log4cplus.appender.ERROR_MSGS=log4cplus::RollingFileAppender
  26. #设置每天记录一个日志文件
  27. log4cplus.appender.DEBUG_MSGS.Schedule=DAILY
  28. log4cplus.appender.DEBUG_MSGS.DatePattern=yyyy-MM-dd
  29. #设置日志文件大小
  30. log4cplus.appender.ERROR_MSGS.MaxFileSize=100MB
  31. #设置生成日志最大个数
  32. log4cplus.appender.ERROR_MSGS.MaxBackupIndex=10
  33. #设置输出日志路径
  34. log4cplus.appender.ERROR_MSGS.File=/home/zhangshibo/log_test/log/error.log
  35. #设置日志打印格式
  36. log4cplus.appender.ERROR_MSGS.layout=log4cplus::PatternLayout
  37. log4cplus.appender.ERROR_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}]%p%m%n
  38. #匹配相同日志级别,只有debug日志才输入到该文件中
  39. log4cplus.appender.ERROR_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
  40. log4cplus.appender.ERROR_MSGS.filters.1.LogLevelToMatch=ERROR
  41. log4cplus.appender.ERROR_MSGS.filters.1.AcceptOnMatch=true
  42. log4cplus.appender.ERROR_MSGS.filters.2=log4cplus::spi::DenyAllFilter
  43. #WARN
  44. #设置日志追加到文件尾
  45. log4cplus.appender.WARN_MSGS=log4cplus::RollingFileAppender
  46. #设置每天记录一个日志文件
  47. log4cplus.appender.DEBUG_MSGS.Schedule=DAILY
  48. log4cplus.appender.DEBUG_MSGS.DatePattern=yyyy-MM-dd
  49. #设置日志文件大小
  50. log4cplus.appender.WARN_MSGS.MaxFileSize=100MB
  51. #设置生成日志最大个数
  52. log4cplus.appender.WARN_MSGS.MaxBackupIndex=10
  53. #设置输出日志路径
  54. log4cplus.appender.WARN_MSGS.File=/home/zhangshibo/log_test/log/warn.log
  55. #设置日志打印格式
  56. log4cplus.appender.WARN_MSGS.layout=log4cplus::PatternLayout
  57. log4cplus.appender.WARN_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}]%p%m%n
  58. #匹配相同日志级别,只有debug日志才输入到该文件中
  59. log4cplus.appender.WARN_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
  60. log4cplus.appender.WARN_MSGS.filters.1.LogLevelToMatch=WARN
  61. log4cplus.appender.WARN_MSGS.filters.1.AcceptOnMatch=true
  62. log4cplus.appender.WARN_MSGS.filters.2=log4cplus::spi::DenyAllFilter