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

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 閱讀(1583) 評論(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/  回復  更多評論
  


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产精品成人va在线观看| 亚洲人成在线观看一区二区| 欧美电影免费网站| 亚洲电影免费观看高清| 国产精品稀缺呦系列在线| 欧美护士18xxxxhd| 一本大道久久a久久精品综合 | 久久久久国产精品麻豆ai换脸| 欧美激情精品| 国产精品99久久久久久人| 亚洲精品美女在线观看播放| 久久成年人视频| 亚洲第一精品在线| 亚洲一区二区三区在线看| 欧美久久一区| 欧美一级欧美一级在线播放| 午夜精品一区二区三区电影天堂 | 亚洲精品欧美精品| 国产精品成人播放| 亚洲伦理网站| 久久xxxx精品视频| 国产精品男女猛烈高潮激情| 日韩一区二区免费高清| 一区二区高清在线| 国内精品久久久久久久影视麻豆| 一本一道久久综合狠狠老精东影业| 亚洲免费播放| 国产综合18久久久久久| 欧美一区二区精品在线| 久久久www| 亚洲小视频在线| 亚洲电影免费观看高清完整版在线 | 国产精品人成在线观看免费| 在线视频日韩| 亚洲福利小视频| 久久不射中文字幕| 国产精品99久久99久久久二8 | 国产精品视区| 欧美高清视频免费观看| 亚洲日本中文| 麻豆亚洲精品| 久久精品99无色码中文字幕| 国产午夜精品全部视频播放| 欧美一区免费视频| 亚洲图片欧洲图片av| 久久国产主播| 亚洲嫩草精品久久| av成人国产| 亚洲日产国产精品| 精品电影在线观看| 国产亚洲第一区| 国产精品免费观看视频| 久久精品人人做人人爽电影蜜月| 欧美激情一级片一区二区| 在线亚洲一区观看| 亚洲美女在线一区| 亚洲日本电影在线| 影音先锋久久资源网| 欧美日韩1区2区3区| 亚洲天堂免费观看| 在线亚洲自拍| 99re6热只有精品免费观看| 久久都是精品| 香蕉久久夜色| 欧美一级欧美一级在线播放| 一区二区视频在线观看| 欧美日本三级| 欧美日韩1234| 欧美日精品一区视频| 久久久久久999| 久久se精品一区精品二区| 宅男在线国产精品| 亚洲午夜精品久久| 亚洲综合国产精品| 午夜在线a亚洲v天堂网2018| 亚洲国产精品精华液网站| 欧美午夜不卡| 国产精品综合| 极品少妇一区二区三区| 欧美日韩在线播放| 欧美日韩一区二区三区免费| 欧美在线精品一区| 亚洲天堂av图片| 午夜精品久久久久久久男人的天堂 | 猫咪成人在线观看| 欧美福利一区| 最新亚洲电影| 亚洲午夜精品17c| 欧美日韩国产色站一区二区三区| 亚洲一区二区三区四区中文| 亚洲精品一区久久久久久| 久久欧美肥婆一二区| 久久久www| 国产日韩一区在线| 久久精品国产亚洲5555| 国产精品欧美久久| 99精品热视频| 中文亚洲免费| 欧美韩日一区二区| 91久久视频| 一区二区三区色| 国产区精品在线观看| 91久久精品国产91久久性色tv| 免费看成人av| 国产亚洲观看| 午夜精品久久久久久99热| 欧美极品在线播放| 欧美一级成年大片在线观看| 欧美一区二区视频97| 在线日韩欧美| 欧美日韩一级大片网址| 久久精品91久久久久久再现| 欧美激情精品久久久久久黑人| 一区二区三区视频在线播放| 久久九九全国免费精品观看| 欧美一区二区成人6969| 欧美日韩国产成人在线观看| 欧美一区二区视频网站| 欧美日韩亚洲一区二区三区四区 | 亚洲一区在线免费观看| 国内成人精品视频| 欧美精品播放| 亚洲欧美日韩国产一区| 香港成人在线视频| 中文一区二区| 在线午夜精品| 在线午夜精品| 亚洲一区二区三区四区五区黄| 欧美成人免费在线观看| 美女脱光内衣内裤视频久久网站| 好吊色欧美一区二区三区视频| 久久综合999| 老鸭窝毛片一区二区三区| 亚洲在线黄色| 亚洲一区二区不卡免费| 久久久久在线| 欧美黄污视频| 国产精品私房写真福利视频| 久久激情视频| 欧美国产极速在线| 国产精品视频| 亚洲片在线资源| 欧美在线关看| 久久久久久久综合色一本| 激情文学综合丁香| 亚洲欧洲精品一区二区三区波多野1战4| 日韩视频在线播放| 久久成人18免费网站| 一区二区免费在线观看| 国产日韩欧美成人| 亚洲国产婷婷香蕉久久久久久99| 欧美三级视频在线观看| 免费欧美在线视频| 欧美日韩一级黄| 欧美风情在线观看| 一本色道久久88精品综合| 亚洲二区在线观看| 亚洲免费伊人电影在线观看av| 亚洲人成啪啪网站| 久久久国产午夜精品| 欧美一区二区三区在线| 亚洲视频电影在线| 欧美精品v日韩精品v国产精品| 一本色道婷婷久久欧美| 亚洲在线视频网站| 亚洲欧美国产精品va在线观看 | 欧美国产在线观看| 久久久精品国产一区二区三区| 亚洲精品日韩一| 午夜精品久久久久久久99水蜜桃 | 欧美三级韩国三级日本三斤| 欧美日韩蜜桃| 欧美亚洲一区三区| 亚洲影视在线播放| 国产日产欧美精品| 亚洲国产小视频在线观看| 亚洲午夜激情在线| 在线观看亚洲视频啊啊啊啊| 在线一区二区三区四区| 美国十次成人| 欧美日韩国产色视频| 亚洲国产欧美一区| 亚洲一区二区三区在线播放| 欧美日韩精品国产| 久久久中精品2020中文| 9色国产精品| 亚洲欧洲在线一区| 欧美成人亚洲成人日韩成人| 亚洲一区二区三区四区五区黄 | 亚洲日韩中文字幕在线播放| 欧美在线播放| 性久久久久久| 国产精品s色| 日韩视频在线免费| 亚洲精品少妇| 免费成人av资源网| 亚洲高清毛片| 欧美日韩不卡| 亚洲人在线视频| 亚洲人妖在线|