日志库EasyLogging++学习系列(4)—— 格式说明符
在上一篇文章中,主要記錄了如何使用 Easylogging++ 的配置功能,雖然已經用了很大的篇幅盡可能詳細地加以記錄,不過相信有些細心的小伙伴可能已經發現遺漏了些什么,請看下面兩句摘自 my_log.conf 配置文件的語句:
[cpp] view plaincopy print?對于等號右邊的值,比如 %level、%datetime{%Y%M%d} 這些特殊符號的意義和用法在上一文中并沒有提及,所以就在這里對此進行一個補充說明。而這些特殊的符號,就是?Easylogging++ 用于控制日志輸出的格式說明符。
輸出格式說明符
和C語言的格式化輸出一樣,Easylogging++ 也可以格式化輸出日志,下面的表格列舉了GitHub上給出的?Easylogging++ 支持的輸出格式說明符:
| %logger | Logger ID |
| %thread | Thread ID - Uses std::thread if available, otherwise GetCurrentThreadId() on windows |
| %level | Severity level (Info, Debug, Error, Warning, Fatal, Verbose, Trace) |
| %levshort | Severity level (Short version i.e, I for Info and respectively D, E, W, F, V, T) |
| %vlevel | Verbosity level (Applicable to verbose logging) |
| %datetime | Date and/or time - Pattern is customizable - see Date/Time Format Specifiers below |
| %user | User currently running application |
| %host | Computer name application is running on |
| %file | File name of source file (Full path) |
| %fbase | File name of source file (Only base name) |
| %line | Source line number |
| %func | Logging function |
| %loc | Source filename and line number of logging (separated by colon) |
| %msg | Actual log message |
| % | Escape character (e.g, %%level will write %level) |
另外,Easylogging++ 還提供了讓我們自定義格式說明符的能力。下面的代碼演示了如何自定義 %ip_addr 這個格式說明符:
[cpp] view plaincopy print?時間格式說明符
在輸出格式說明符中有一個專門用于格式化輸出時間的說明符:%datetime ,而?Easylogging++ ?已經默認為?%datetime 設置了一個時間輸出格式。然而,我們可以利用時間格式說明符重新自定義時間的輸出格式,下面的表格列舉了GitHub上給出的?Easylogging++ ?支持的時間格式說明符:
| %d | Day of month (zero-padded) |
| %a | Day of the week - short (Mon, Tue, Wed, Thu, Fri, Sat, Sun) |
| %A | Day of the week - long (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday) |
| %M | Month (zero-padded) |
| %b | Month - short (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec) |
| %B | Month - Long (January, February, March, April, May, June, July, August, September, October, November, December) |
| %y | Year - Two digit (13, 14 etc) |
| %Y | Year - Four digit (2013, 2014 etc) |
| %h | Hour (12-hour format) |
| %H | Hour (24-hour format) |
| %m | Minute (zero-padded) |
| %s | Second (zero-padded) |
| %g | Milliseconds (width is configured by ConfigurationType::MillisecondsWidth) |
| %F | AM/PM designation |
| % | Escape character |
注意事項
在剛開始使用?Easylogging++ 作為我的日志庫的時候,我曾經寫過下面這樣一個配置文件:
[plain] view plaincopy print?
從上面給出的反例中可以看出,對于輸出格式說明符,只適用于配置項 FORMAT;而時間格式說明符,不僅適用于配置項 FORMAT,同樣還適用于配置項 FILENAME。這一點,通過查看?Easylogging++ 的源碼也可以得到證實。當然,如果我們想要讓配置項 FILENAME 也能夠使用輸出格式說明符,可以通過修改源碼去實現。建議有興趣的小伙伴參考一下函數 updateFormatSpec() ,然后在函數?resolveFilename() 中修改即可。
總結
以上是生活随笔為你收集整理的日志库EasyLogging++学习系列(4)—— 格式说明符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php获取40001,php - Dis
- 下一篇: 日志库EasyLogging++学习系列