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

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>
            亚洲国产精品久久人人爱蜜臀| 99精品视频一区| 一本色道久久综合亚洲精品小说| 欧美二区乱c少妇| 久久久久国产一区二区三区四区| 午夜精品短视频| 欧美一区二区免费视频| 欧美一区二区私人影院日本| 欧美一乱一性一交一视频| 欧美亚洲自偷自偷| 女女同性女同一区二区三区91| 欧美aa在线视频| 亚洲激情电影在线| 亚洲欧洲一区二区天堂久久| 日韩一级免费| 欧美在线亚洲在线| 欧美va亚洲va国产综合| 欧美日韩精品一区二区在线播放| 欧美午夜在线观看| 狠狠久久综合婷婷不卡| 亚洲剧情一区二区| 久久精品123| 欧美黄色小视频| 99xxxx成人网| 欧美在线网站| 欧美午夜不卡在线观看免费| 国产亚洲免费的视频看| 亚洲精品护士| 亚洲欧美综合v| 亚洲电影av| 久久se精品一区精品二区| 欧美精品一级| 国产在线欧美日韩| 99xxxx成人网| 麻豆精品91| 亚洲免费视频观看| 欧美大片国产精品| 国产在线观看一区| 亚洲一二三四久久| 欧美高清视频在线播放| 亚洲免费在线观看视频| 欧美人与禽猛交乱配视频| 狠狠综合久久av一区二区老牛| 亚洲视频在线二区| 欧美电影免费观看大全| 午夜在线精品偷拍| 欧美午夜www高清视频| 亚洲国产成人精品视频| 午夜久久福利| 日韩午夜中文字幕| 免费在线观看日韩欧美| 国产一区二区三区久久久| 一区二区不卡在线视频 午夜欧美不卡'| 久久精品国产综合| 亚洲综合二区| 国产精品大片免费观看| 一本到高清视频免费精品| 欧美成人免费大片| 老司机精品视频网站| 国产最新精品精品你懂的| 亚洲欧美在线一区二区| 在线亚洲观看| 欧美日韩亚洲一区三区| 日韩亚洲一区二区| 亚洲欧洲美洲综合色网| 美女性感视频久久久| 在线观看日韩欧美| 欧美国产精品专区| 欧美成人精品高清在线播放| 亚洲剧情一区二区| 亚洲精品日韩一| 欧美一区二区三区视频| 午夜伦欧美伦电影理论片| 国产九九精品视频| 久久―日本道色综合久久| 久久久久久久久岛国免费| 伊人一区二区三区久久精品| 老色批av在线精品| 久久在线免费观看视频| 嫩草影视亚洲| 久久精品人人做人人爽| 狠狠色狠狠色综合| 美女黄色成人网| 美乳少妇欧美精品| 亚洲日本在线视频观看| 91久久在线播放| 老司机久久99久久精品播放免费| 怡红院精品视频| 麻豆精品视频在线| 久久久久免费观看| 亚洲伦理精品| 亚洲激情在线激情| 国产综合网站| 国产一区91| 嫩草成人www欧美| 母乳一区在线观看| 久久久一二三| 狠狠色狠狠色综合日日五| 欧美日韩免费高清| 亚洲午夜国产成人av电影男同| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲一区中文| 欧美1区2区| 久久综合福利| 亚洲乱码精品一二三四区日韩在线| 欧美在线在线| 久久久欧美一区二区| 欧美国产日韩亚洲一区| 欧美性久久久| 久久精品国产亚洲精品| 欧美国产精品人人做人人爱| 国产亚洲精品美女| 一区二区激情| 久久精品国产清自在天天线| 欧美性色视频在线| 欧美超级免费视 在线| 亚洲精品乱码视频| 久久精品成人一区二区三区蜜臀| 免费看黄裸体一级大秀欧美| 亚洲一二三区在线| 亚洲国产精品一区二区久 | 另类尿喷潮videofree| 午夜在线成人av| 香蕉亚洲视频| 在线精品视频一区二区三四| 亚洲欧洲一区二区在线播放| 一区二区三区三区在线| 亚洲欧洲日韩在线| 夜夜夜精品看看| 欧美极品aⅴ影院| 亚洲美女在线一区| 亚洲精品欧美专区| 亚洲人人精品| 亚洲欧洲一区二区三区| 国产欧美精品va在线观看| 亚洲国产小视频在线观看| 亚洲欧美激情视频| 亚洲综合成人在线| 欧美日韩中文字幕精品| 久久综合给合| 亚洲人成网站777色婷婷| 久久综合伊人| 久久久中精品2020中文| 亚洲欧美www| 一区二区av| 亚洲尤物在线| 亚洲国产aⅴ天堂久久| 精品av久久久久电影| 亚洲破处大片| 性欧美18~19sex高清播放| 一本色道久久综合精品竹菊 | 亚洲深夜福利| 欧美日韩三级| 99爱精品视频| 欧美一级视频| 黄色av日韩| 久久免费国产精品1| 欧美1区视频| 一本色道久久加勒比精品| 欧美日韩综合视频| 亚洲自拍16p| 久久国产日本精品| …久久精品99久久香蕉国产| 男人天堂欧美日韩| 在线亚洲成人| 麻豆精品国产91久久久久久| 91久久精品国产91久久| 欧美成人精品福利| 亚洲乱码久久| 蜜乳av另类精品一区二区| 中文亚洲欧美| 国产精品一区三区| 久久久久免费视频| 亚洲美女精品久久| 久久狠狠久久综合桃花| 影音先锋久久资源网| 欧美大片在线观看| 午夜一级久久| 亚洲国产综合视频在线观看| 亚洲免费视频网站| 亚洲第一福利社区| 欧美午夜视频网站| 欧美中文字幕不卡| 99国产精品久久久久久久| 久久精品国产亚洲一区二区三区| 亚洲精选一区| 国产女人精品视频| 久久综合久久88| 亚洲香蕉伊综合在人在线视看| 久久综合久久久久88| 99国内精品久久| 红桃视频亚洲| 国产精品婷婷| 欧美精品一区二| 久久久久久久综合| 亚洲一区二区三区四区在线观看 | 亚洲国产精品一区| 久久精品一区二区三区不卡牛牛 | 欧美在线视频日韩| 亚洲美女中文字幕|