青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Javen-Studio 咖啡小屋

http://javenstudio.org - C++ Java 分布式 搜索引擎
Naven's Research Laboratory - Thinking of Life, Imagination of Future

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  24 隨筆 :: 57 文章 :: 170 評論 :: 4 Trackbacks

fastlog 的使用

C++ 通用框架的設計 作者: naven

1           fastlog 介紹

fastlog 是參考 log4j log4cplus 框架使用 javen c++ 庫設計實現的日志記錄庫,具有 log4j 庫類似的優點,記錄日志非常方便,擴展和配置也非常容易。 Log4j 日志庫我想應該在 java 的領域已經應用很廣泛了,這樣的日志庫可以非常方便地將日志輸出到屏幕、文件、 syslog 、遠程服務器等任何地方,而日志輸出的格式也可以任意調整,可以很容易控制輸出的日志級別,而這一切僅需修改一下配置文件,應用程序不用作任何修改。

 

fastlog 主要有如下一些模塊

 

Appenders                          掛接器,定義一些日志輸出的設備終端,如文件、屏幕等

Layouts                                布局器,定義輸出的日志格式

         Hierarchies                           分類器,用于對日志信息分類,即對日志分級,用戶不能直接調用

         LoglevelManager               日志級別管理器,即 TRACE, DEBUG, INFO, WARNING, ERROR

Logger                                  記錄器,即記錄日志的對象,每個應用模塊應該擁有一個 Logger

         PropertyConfigurator         配置器,用于通過配置文件配置 Logger Appender Layout

 

2           Hello World!

下面的程序示例如何使用 fastlog 記錄日志:

 

//  定義一個該應用模塊使用的Logger記錄器,命名為”log”
static  Logger _logger  =  Logger::getInstance( " log " );
void  main() 
{
//  配置器讀取配置文件fastlog.properties初始化Logger,只初始化一次
    PropertyConfigurator::doConfigure( " fastlog.properties " ); 
    
//  輸出日志
    _logger.notice( " This is the NOTICE log message”); 
}

日志輸出可能(與 fastlog.properties 配置有關)如下:

 

 

2006-08-10 21:44:37 [log]-[NOTICE] This is the NOTICE log message

 

1           fastlog 配置文件

fastlog 配置文件可能會較復雜,下面先介紹一個典型的 fastlog.properties 如下:

 

 

# 這一行不可缺少,定義 fastlog 的日志級別和輸出設備 

# fastlog.rootLogger 是 fastlog 的配置標識,不可更改 

# = 號后面即為具體設置,后面第一個逗號 ”,” 前是設置日志輸出級別,后面是設置輸出設備 

# INFO & ERROR 表示同時輸出 INFO 和 ERROR 級別日志,所以可以任意定義輸出的級別,這跟 log4j 不一樣的 

# A1, R 是表示兩個輸出設備,這個名字可以自己定義的,改成 OUT1, OUT2 等都可以 

# 這個設備在下面定義輸出設備的詳細設置就會用到 

fastlog.rootLogger = INFO & ERROR & CRIT & WARN & FATAL & ALERT & NOTICE & DEBUG, A1, R 

  

# 這部分定義名為 ”A1” 的輸出設備,定義的名稱規則是 fastlog.appender. 加設備名,再加 . 設備屬性 

# 這一行定義輸出的設備,即輸出到 Console 控制臺 

fastlog.appender.A1 = fastlog::ConsoleAppender 

# 這是定義輸出的日志格式,使用 PatternLayout ,即用可配置格式的 Layout 輸出 

fastlog.appender.A1.layout = fastlog::PatternLayout 

# 這就是定義具體的輸出格式,后面會詳細講 

fastlog.appender.A1.layout.ConversionPattern = %D
{%Y-%m-%d %H:%M:%S.%q} [%c:%R:%T]-[%5p] %m %n 

  

# 這是定義第二個輸出設備,即 DailyFileAppender 按日期文件輸出,后面詳細講 

fastlog.appender.R = fastlog::DailyFileAppender 

fastlog.appender.R.File = fastlog.log 

fastlog.appender.R.Path = . 

fastlog.appender.R.FilePrefixName = 

fastlog.appender.R.FileExtendName = .log 

fastlog.appender.R.TimeFormatPattern = %Y%m%d%H 

fastlog.appender.R.Schedule = HOURLY 

fastlog.appender.R.layout = fastlog::PatternLayout 

fastlog.appender.R.layout.ConversionPattern = %D
{%Y-%m-%d %H:%M:%S.%q} [%c:%R:%T]-[%5p] %m %n 

 

下面講講主要用到的 Appender Layout 的用法

2           fastlog::ConsoleAppender 輸出設備

輸出到控制臺的 Appender ,比較簡單就不詳細講了。

還有 fastlog::FileAppender 也比較簡單,實際用處也不大,配置跟下面類似。

還有 fastlog::NullAppender 比較特殊,哪里也不輸出,主要用于測試。

3           fastlog::DailyFileAppender 輸出設備

按日期時間等自動切分日志的 Appender ,意思是會輸出到帶時間格式命名的文件,到新的時間段如下一天,則自動生成新的日期命名的文件輸出,日志會自動切分,推薦使用。

舉例,按上面的例子,如果當前時間是 2006-8-10 12:00:00 ,日志會自動輸出到 2006081012.log 的文件中,如果當前時間變成 2006-8-10 13:01:00 ,則日志系統會自動創建名為 2006081013.log 的文件,并將新日志輸出到此新文件中。

配置定義如下:

 

# 定義日志輸出設備為 fastlog::DailyFileAppender 

fastlog.appender.R = fastlog::DailyFileAppender 

  

# 這個名字可以不用管它 

fastlog.appender.R.File = fastlog.log 

  

# 日志輸出的目錄,此例為當前目錄 

fastlog.appender.R.Path = . 

  

# 日志文件名的前綴,如果定義了如 mylog ,則日志文件名前會帶此名字 

fastlog.appender.R.FilePrefixName = 

  

# 日志文件名的擴展名,一般都為 .log 吧 

fastlog.appender.R.FileExtendName = .log 

  

# 日志文件的日期名格式,與其他日期格式化類似,詳見后面的 PatternLayout 

fastlog.appender.R.TimeFormatPattern = %Y%m%d%H 

  

# 日志自動切分可以按如下幾種自動滾動日志 

#     MONTHLY( 每月 ) WEEKLY( 每周 ) DAILY( 每天 ) TWICE_DAILY( 每兩天 ) 

#     HOURLY( 每小時 ) MINUTELY( 每分鐘 ) 

fastlog.appender.R.Schedule = HOURLY 

  

# 日志輸出的 Layout 定義 

fastlog.appender.R.layout = fastlog::PatternLayout 

fastlog.appender.R.layout.ConversionPattern = %D
{%Y-%m-%d %H:%M:%S.%q} [%c:%R:%T]-[%5p] %m %n 

 

 

4           fastlog::RollingFileAppender 輸出設備

按文件大小自動滾動日志的 Appender ,這種方式 Unix syslog 用的比較多。當日志文件達到一定大小后就自動換一個名字備份起來,所以當前日志文件始終不會超過一定大小。

配置定義如下:

 

# 定義日志輸出設備為 fastlog:: RollingFileAppender 

fastlog.appender.R2 = fastlog::RollingFileAppender 

  

# 定義日志輸出的文件,可以帶具體路徑 

fastlog.appender.R2.File = fastlog.log 

  

# 定義滾動日志的文件大小,超過此大小則滾動日志,可以用 KB 或 MB 等表示 

fastlog.appender.R2.MaxFileSize = 200KB 

  

# 定義最多備份的日志文件數目 

fastlog.appender.R2.MaxBackupIndex = 10 

  

# 日志輸出的 Layout 定義 

fastlog.appender.R2.layout = fastlog::PatternLayout 

fastlog.appender.R2.layout.ConversionPattern = %D
{%Y-%m-%d %H:%M:%S.%q} [%c:%R:%T]-[%5p] %m %n 

 

5           fastlog::DailyRollingFileAppender 輸出設備

按日期自動滾動日志的 Appender 。它與上面的 RollingFileAppender 類似,不同就是時間經過一定時間段就自動滾動日志備份起來。而時間的處理又與 fastlog::DailyFileAppender 類似。

配置定義如下:

 

# 定義日志輸出設備為 fastlog:: DailyRollingFileAppender 

fastlog.appender.R3 = fastlog::DailyRollingFileAppender 

  

# 定義日志輸出的文件,可以帶具體路徑 

fastlog.appender.R3.File = fastlog.log 

  

# 日志文件的日期名格式,與其他日期格式化類似,詳見后面的 PatternLayout 

fastlog.appender.R3.TimeFormatPattern = %Y%m%d%H 

  

# 日志自動切分可以按如下幾種自動滾動日志 

#     MONTHLY( 每月 ) WEEKLY( 每周 ) DAILY( 每天 ) TWICE_DAILY( 每兩天 ) 

#     HOURLY( 每小時 ) MINUTELY( 每分鐘 ) 

fastlog.appender.R3.Schedule = HOURLY 

  

# 日志輸出的 Layout 定義 

fastlog.appender.R3.layout = fastlog::PatternLayout 

fastlog.appender.R3.layout.ConversionPattern = %D
{%Y-%m-%d %H:%M:%S.%q} [%c:%R:%T]-[%5p] %m %n 

 

 

6           fastlog::SocketAppender 輸出設備

這個比較特殊,它可以將日志輸出到某臺服務器,通過指定日志服務器的 IP/ 域名和端口。

配置定義如下:

 

 

# 定義日志輸出設備為 fastlog:: SocketAppender 

fastlog.appender.R4 = fastlog::SocketAppender 

  

# 定義日志服務器的 hostname ,此服務器的服務可以統一保存日志 

fastlog.appender.R4.host = 192.168.2.1 

  

# 日志服務器的服務端口 

fastlog.appender.R4.port = 9998 

  

# 連接超時時間,按秒 

fastlog.appender.R4.TimeOut = 10 

  

# 日志輸出的 Layout 定義 

fastlog.appender.R4.layout = fastlog::PatternLayout 

fastlog.appender.R4.layout.ConversionPattern = %D
{%Y-%m-%d %H:%M:%S.%q} [%c:%R:%T]-[%5p] %m %n 

 

 

下面介紹幾種 Layout

7           fastlog::SimpleLayout 布局器

這個非常,只是在輸出的原始日志前加個 Loglevel 和一個 ”-” ,如:

 

 

DEBUG - This is the simple formatted log message 

 

 

8           fastlog::TTCCLayout 布局器

這是一種缺省的帶格式輸出的布局器,其格式由時間、線程 ID Logger NDC 組成( consists of time, thread, Logger and nested diagnostic context information, hence the name )。 TTCCLayout 在使用時可以選擇顯示本地時間或 GMT 時間,缺省是按照本地時間顯示。

典型輸出如下:

 

10-16-06 12:12:23,321 [1075298944] DEBUG log <> - this is a TTCCLayout log format

 

 

9           fastlog::PatternLayout 布局器

這是一種有詞法分析功能的模式布局器,應用最廣泛,也最強大,推薦使用,下面詳細介紹。

用戶可以根據一些定義好的標識符自定義輸出格式,如上面的例子:

 

 

# 日志輸出的 Layout 定義 

fastlog.appender.R4.layout = fastlog::PatternLayout 

fastlog.appender.R4.layout.ConversionPattern = %D
{%Y-%m-%d %H:%M:%S.%q} [%c:%R:%T]-[%5p] %m %n 

 

 

          其中的 %D{%Y-%m-%d %H:%M:%S.%q} [%c:%R:%T]-[%5p] %m %n 即是一種輸出模式。

下面詳細介紹這些標識符的定義:

( 1 ) "%%" ,轉義為 % ,即 pattern = "%%" 時輸出 "%" 

( 2 ) "%c" ,輸出 logger 名稱,比如 pattern ="%c" 時輸出 : "test.logger.mytest " ,也可以控制 logger 名稱的顯示層次,比如 "%c
{1}" 時輸出 "test_logger" ,其中數字表示層次。 

( 3 ) "%D" ,顯示本地時間,當 pattern ="%D" 時輸出 :"2006-8-10 20:55:25" , %d 顯示標準時間。還可以通過 %d
{} 定義更詳細的顯示格式,比如 %d{%H:%M:%s} 表示要顯示小時:分鐘:秒。 

大括號中可顯示的預定義標識符如下: 

%a            表示禮拜幾,英文縮寫形式,比如 "Fri" 

%A           表示禮拜幾,比如 "Friday" 

%b             表示幾月份,英文縮寫形式,比如 "Oct" 

%B           表示幾月份, "October" 

%c            標準的日期+時間格式,如 "Sat Oct 16 18:56:19 2006" 

%d             表示今天是這個月的幾號 (1-31)"16" 

%H            表示當前時刻是幾時 (0-23) ,如 "18" 

%I              表示當前時刻是幾時 (1-12) ,如 "6" 

%j              表示今天是哪一天 (1-366) ,如 "290" 

%m            表示本月是哪一月 (1-12) ,如 "10" 

%M           表示當前時刻是哪一分鐘 (0-59) ,如 "59" 

%p             表示現在是上午還是下午, AM or PM 

%q             表示當前時刻中毫秒部分 (0-999) ,如 "237" 

%Q            表示當前時刻中帶小數的毫秒部分 (0-999.999) ,如 "430.732" 

%S             表示當前時刻的多少秒 (0-59) ,如 "32" 

%U            表示本周是今年的第幾個禮拜,以周日為第一天開始計算 (0-53) ,如 "41" 

%w            表示禮拜幾, (0-6, 禮拜天為 0) ,如 "6" 

%W           表示本周是今年的第幾個禮拜,以周一為第一天開始計算 (0-53) ,如 "41" 

%x             標準的日期格式,如 "08/10/06" 

%X            標準的時間格式,如 "19:02:34" 

%y             兩位數的年份 (0-99) ,如 "06" 

%Y            四位數的年份,如 "2006" 

%Z            時區名,比如 "GMT" 

  

( 4 ) "%F" ,輸出當前記錄器所在的文件名稱,比如 pattern ="%F" 時輸出 : "main.cpp" 

( 5 ) "%L" ,輸出當前記錄器所在的文件行號,比如 pattern ="%L" 時輸出 : "51" 

( 6 ) "%l" ,輸出當前記錄器所在的文件名稱和行號,比如 pattern ="%L" 時輸出 :     "main.cpp:51" 

( 7 ) "%m" ,輸出原始信息,比如 pattern ="%m" 時輸出 : "this a test log" 。 

( 8 ) "%n" ,換行符 

( 9 ) "%p" ,輸出 LogLevel ,比如 pattern ="%p" 時輸出 : "DEBUG" 

( 10 ) "%R" ,輸出記錄器所在的進程 ID ,比如 pattern ="%R" 時輸出 : "567" 

( 11 ) "%T" ,輸出記錄器所在的線程 ID ,比如 pattern ="%T" 時輸出 : "2332" 

( 12 ) "%x" ,嵌套診斷上下文 NDC (nested diagnostic context) 輸出,從堆棧中彈出上下文信息。 

( 13 )格式對齊,比如 pattern ="%-10m" 時表示左對齊,寬度是 10 ,此時會輸出 "teststr   " ,當然其它的控制字符也可以相同的方式來使用,比如 "%-12d" , "%-5p" 等。 

  

 

 

 

 

C++ 通用框架的設計 作者: naven 日期: 2006-8-10

 

posted on 2006-08-10 23:20 Javen-Studio 閱讀(1573) 評論(2)  編輯 收藏 引用

評論

# re: fastlog的使用 2009-06-30 20:59 DZ
向樓主請假一個問題哦

要使用fastlog需要配置什么?fastlog是否支持跨平臺,在Linux和arm上使用的情況怎么樣呢?

我在網上想搜一下fastlog的主頁,可是沒有找到,樓主能推薦一些關于fastlog的資料么?  回復  更多評論
  

# re: fastlog的使用 2009-07-05 00:37 navy
感謝支持,fastlog是javen庫的一部份,現在有一個linux版本,請到這里下載https://sourceforge.net/projects/javen/  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产美女精品久久久久∴| 欧美美女视频| 国产日韩欧美在线| 午夜免费在线观看精品视频| 亚洲色诱最新| 国产亚洲精品一区二区| 久久综合网色—综合色88| 欧美在线观看一区二区| 一区二区三区在线看| 亚洲国产精选| 欧美性开放视频| 久久久亚洲国产天美传媒修理工| 久久精品人人做人人综合| 最近中文字幕mv在线一区二区三区四区| 模特精品裸拍一区| 欧美日韩亚洲视频| 久久久久中文| 欧美猛交免费看| 久久精品国产一区二区三区免费看| 久久免费国产| 亚洲一区二区三区久久| 久久精品国产久精国产爱| 亚洲美女福利视频网站| 亚洲欧美日本伦理| 亚洲精品久久久久久久久久久久久| 日韩图片一区| 亚洲福利一区| 亚洲综合激情| 99re66热这里只有精品4| 午夜精品久久久久| 一本色道久久综合亚洲精品高清| 欧美一区二区播放| 一区二区久久久久| 久久资源在线| 久久九九久精品国产免费直播 | 亚洲摸下面视频| 久久久久久久综合狠狠综合| 亚洲图片在线观看| 免费观看不卡av| 久久久久久久综合日本| 欧美网站在线| 亚洲国产一成人久久精品| 国产一区二区三区四区老人| 一本高清dvd不卡在线观看| 亚洲激情综合| 久久人人爽爽爽人久久久| 欧美一区二区三区播放老司机| 欧美激情一区二区三区四区| 美女国产精品| 亚洲一区影音先锋| 99精品国产福利在线观看免费 | 另类图片综合电影| 久久久久高清| 国产欧美日韩一区二区三区在线 | 中文精品视频| 一区二区av| 欧美日韩国产小视频在线观看| 女女同性精品视频| 伊人蜜桃色噜噜激情综合| 欧美一区二区日韩| 久久激情综合网| 国产日韩欧美自拍| 午夜精品久久久| 久久精品视频网| 国产亚洲一本大道中文在线| 亚洲综合色自拍一区| 欧美一区二区三区四区在线| 国产精品久久看| 亚洲一区二区三区三| 欧美一级播放| 国产一区二区久久精品| 久久精品国产77777蜜臀| 久久久综合网站| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产亚洲欧美另类中文| 久久国产99| 男人的天堂成人在线| 亚洲国产天堂久久国产91| 欧美激情bt| 在线天堂一区av电影| 亚洲欧美日韩在线综合| 国产日韩欧美在线看| 久久最新视频| 99精品国产高清一区二区| 午夜精品久久久久久久久久久久 | 亚洲一线二线三线久久久| 国产精品尤物| 久久中文久久字幕| 在线综合亚洲| 久久综合一区| 亚洲影院色无极综合| 国模吧视频一区| 欧美高清一区| 亚洲欧美一区二区在线观看| 蜜臀av性久久久久蜜臀aⅴ| 亚洲美女电影在线| 国产亚洲毛片在线| 99精品福利视频| 久久久久久久激情视频| 亚洲精品视频二区| 国产精品永久免费观看| 男人的天堂亚洲| 亚洲一区日韩在线| 亚洲高清资源| 欧美在线播放视频| 99re视频这里只有精品| 国产亚洲激情视频在线| 欧美经典一区二区三区| 午夜精品www| 日韩一级免费观看| 欧美 日韩 国产一区二区在线视频 | 久久夜色精品国产欧美乱极品 | 免费高清在线视频一区·| 亚洲视频视频在线| 亚洲国产色一区| 国产一区二区三区直播精品电影 | 亚洲国产精品成人综合色在线婷婷| 欧美日韩一区二区视频在线| 久久久久这里只有精品| 亚洲免费影视第一页| 亚洲伦伦在线| 亚洲第一中文字幕在线观看| 久久久久久综合网天天| 亚洲欧美综合v| 亚洲小说区图片区| 99精品久久免费看蜜臀剧情介绍| 一区二区亚洲精品| 国产一区二区久久精品| 国产丝袜美腿一区二区三区| 欧美四级电影网站| 欧美日韩免费在线| 欧美精品久久久久久久久久| 久热精品视频在线观看| 久久久久久**毛片大全| 欧美一区二区免费| 欧美在线首页| 欧美在线亚洲一区| 欧美一区二区视频在线观看| 亚洲综合精品自拍| 欧美一区二区高清在线观看| 西瓜成人精品人成网站| 亚洲影院一区| 欧美一区二区三区喷汁尤物| 欧美一级理论性理论a| 欧美亚洲视频| 久久精品国产91精品亚洲| 久久久亚洲午夜电影| 久久国产免费| 美国成人毛片| 欧美激情一区三区| 国产精品高潮视频| 国产麻豆综合| 极品av少妇一区二区| 亚洲电影免费观看高清完整版在线观看 | 小嫩嫩精品导航| 午夜日韩av| 久久久久久久成人| 欧美成人免费一级人片100| 欧美黄色视屏| 国产精品久久久久久久久久尿| 久久国产主播| 老司机一区二区三区| 欧美高清在线一区| 国产精品videosex极品| 国产亚洲精品aa| 亚洲国产老妈| 亚洲午夜伦理| 久久亚洲影院| 91久久国产精品91久久性色| 夜夜夜精品看看| 午夜在线成人av| 欧美不卡激情三级在线观看| 欧美日精品一区视频| 国产视频在线观看一区| 亚洲精品永久免费精品| 性8sex亚洲区入口| 亚洲国产天堂久久综合| 亚洲一区国产一区| 免费不卡中文字幕视频| 国产精品久久久久久久久久尿| 在线播放一区| 亚洲影院在线观看| 女仆av观看一区| 亚洲自拍16p| 欧美久久久久久蜜桃| 国内精品视频一区| 亚洲一区二区三区涩| 久久综合999| 亚洲中字黄色| 欧美日韩理论| 亚洲高清资源| 久久久91精品国产一区二区三区| 亚洲国产天堂久久国产91| 欧美在线视频一区二区三区| 国产精品高清在线观看| 亚洲激情影院| 老色鬼精品视频在线观看播放| 亚洲一二三级电影| 欧美日韩在线视频一区| 亚洲黄色一区|