Soumettre la recherche
Mettre en ligne
Boost.Logとfluentdで始めるログ活用術
•
6 j'aime
•
2,925 vues
T
Toshiki Teramura
Suivre
Boost.Logとfluentdで始めるログ活用術
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 32
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
学位論文の書き方メモ (Tips for writing thesis)
学位論文の書き方メモ (Tips for writing thesis)
Nobuyuki Umetani
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
半導体製造(TinyTapeout)に挑戦しよう!
半導体製造(TinyTapeout)に挑戦しよう!
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
[DL輪読会]VoxelPose: Towards Multi-Camera 3D Human Pose Estimation in Wild Envir...
[DL輪読会]VoxelPose: Towards Multi-Camera 3D Human Pose Estimation in Wild Envir...
Deep Learning JP
Recommandé
学位論文の書き方メモ (Tips for writing thesis)
学位論文の書き方メモ (Tips for writing thesis)
Nobuyuki Umetani
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
半導体製造(TinyTapeout)に挑戦しよう!
半導体製造(TinyTapeout)に挑戦しよう!
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
[DL輪読会]VoxelPose: Towards Multi-Camera 3D Human Pose Estimation in Wild Envir...
[DL輪読会]VoxelPose: Towards Multi-Camera 3D Human Pose Estimation in Wild Envir...
Deep Learning JP
Project Facilitation
Project Facilitation
Kenji Hiranabe
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
Toru Tamaki
Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも)
Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも)
Daichi Kitamura
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
言語資源と付き合う
言語資源と付き合う
Yuya Unno
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
You&I
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
なおき きしだ
マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向
Koichiro Mori
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
Takayuki Shimizukawa
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へ
akipii Oga
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集
akipii Oga
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Boost Tour 1.53.0 merge
Boost Tour 1.53.0 merge
Akira Takahashi
Boost study#4
Boost study#4
Yuki Tamura
Contenu connexe
Tendances
Project Facilitation
Project Facilitation
Kenji Hiranabe
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
Toru Tamaki
Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも)
Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも)
Daichi Kitamura
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
言語資源と付き合う
言語資源と付き合う
Yuya Unno
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
You&I
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
なおき きしだ
マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向
Koichiro Mori
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
Takayuki Shimizukawa
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へ
akipii Oga
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集
akipii Oga
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Tendances
(20)
Project Facilitation
Project Facilitation
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも)
Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも)
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
言語資源と付き合う
言語資源と付き合う
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へ
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
メタプログラミングって何だろう
メタプログラミングって何だろう
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
En vedette
Boost Tour 1.53.0 merge
Boost Tour 1.53.0 merge
Akira Takahashi
Boost study#4
Boost study#4
Yuki Tamura
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
Takatoshi Kondo
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
hiyohiyo
C++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返り
paosidufgythrj
Boost Tour 1.53.0
Boost Tour 1.53.0
Akira Takahashi
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
Boost sg msgpack
Boost sg msgpack
Takatoshi Kondo
En vedette
(8)
Boost Tour 1.53.0 merge
Boost Tour 1.53.0 merge
Boost study#4
Boost study#4
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返り
Boost Tour 1.53.0
Boost Tour 1.53.0
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
Boost sg msgpack
Boost sg msgpack
Similaire à Boost.Logとfluentdで始めるログ活用術
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
Tetsuya Morimoto
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
Fujio Kojima
Git入門-概念編
Git入門-概念編
Shin Tanigawa
vscode pipenv docker
vscode pipenv docker
ikdysfm
Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02
Kosuke Tanabe
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
CODE BLUE
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
dcubeio
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
Akihiko Shirai
俺とGitHub
俺とGitHub
Masayuki KaToH
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送
Google Cloud Platform - Japan
SnapDishの事例
SnapDishの事例
Fumikazu Kiyota
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
Takayuki Shimizukawa
Git 初心者講座 by forkwell
Git 初心者講座 by forkwell
sinsoku listy
osakapy 2014.05 LT
osakapy 2014.05 LT
Hattori Hideo
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
No Bu
Github入門2014
Github入門2014
Akihiko Shirai
DockerでJupyter使おうぜ
DockerでJupyter使おうぜ
Satoshi Yazawa
Web IDE Gitpodを使ってTOPPES OSを体験してみよう
Web IDE Gitpodを使ってTOPPES OSを体験してみよう
Center for Embedded Computing Systems, Nagoya Univ.
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
Seiya Mizuno
Similaire à Boost.Logとfluentdで始めるログ活用術
(20)
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
Git入門-概念編
Git入門-概念編
vscode pipenv docker
vscode pipenv docker
Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
俺とGitHub
俺とGitHub
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送
SnapDishの事例
SnapDishの事例
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
Git 初心者講座 by forkwell
Git 初心者講座 by forkwell
osakapy 2014.05 LT
osakapy 2014.05 LT
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Github入門2014
Github入門2014
DockerでJupyter使おうぜ
DockerでJupyter使おうぜ
Web IDE Gitpodを使ってTOPPES OSを体験してみよう
Web IDE Gitpodを使ってTOPPES OSを体験してみよう
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
Dernier
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Dernier
(9)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
Boost.Logとfluentdで始めるログ活用術
1.
BOOST.LOGとFLUENTDで始めるログ活用術 Boost.勉強会#17@東京 Created by @termoshtt
2.
自己紹介 大学院生(D3) 専攻= 流体数理(物理+ 応用数学) シミュレーション=
C++ データ解析= Python
3.
CONTENTS fluentd : ログ収集のための共通基盤 Boost.Logの構成と使い方
4.
WHY DO WE
NEED LOG?
5.
一人で使う 時間のかかる処理の進捗 デバッグ
6.
人の書いたコードを使う FOR LIBRARIAN 問題が発生した事をユーザーに伝える 問題を解決するための情報を集める FOR USER 発生した状況の情報を得る 開発者に問題を解決してもらうために情報を提供する
7.
つまり人が目視で確認する
8.
9.
FLUENTD ログを集約するための共通フォーマット リアルタイムにログを転送
10.
FLUENTD 様々なログを収集するためのプラグイン apache syslog ... 様々なストレージに保存するためのプラグイン elasticsearch ...
11.
FLUENTD 標準出力としてのfluentd UNIX的に解析ツールを組み合わせる事が可能
12.
BOOST.LOGの使い方
13.
BOOST.LOG フル機能のロギングライブラリ custom logger log filtering custom
sink
14.
15.
16.
ログの収集 名前空間/クラスにロガーを追加 namespace mod { namespace
logging = boost::log; namespace log { namespace attrs = logging::attributes; namespace src = logging::sources; } using severity_level = logging::trivial::severity_level; BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT( logger, src::severity_logger_mt<severity_level>); void init(); } // namespace mod
17.
ログの収集 ロガー毎に属性を付与 namespace mod { void
init() { auto &lg = logger::get(); lg.add_attribute("Tag", log::attrs::make_constant("mod")); // lg.add_attribute("Tag", attrs::constant<std::string>("mod1")); lg.add_attribute("Scope", log::attrs::named_scope()); } } // namespace mod
18.
ログの収集 属性のキーワードを登録 キーワードを用いて出力・フィルターを制御する BOOST_LOG_ATTRIBUTE_KEYWORD(line_id, "LineID", unsigned
int) BOOST_LOG_ATTRIBUTE_KEYWORD(severity, "Severity", severity_level) BOOST_LOG_ATTRIBUTE_KEYWORD(tag_attr, "Tag", std::string) BOOST_LOG_ATTRIBUTE_KEYWORD(scope, "Scope", log::attrs::named_scope::value
19.
ログの収集 出力時に情報を追加 namespace mod { void
func() { BOOST_LOG_FUNCTION() // Scopeの値を設定(mod->func) auto &lg = logger::get(); if (flag) { BOOST_LOG_NAMED_SCOPE("true case"); // Scopeに入った事を記録する BOOST_LOG_SEV(lg, severity_level::info) << "flag is true"; } else { BOOST_LOG_NAMED_SCOPE("false case"); // Scopeに入った事を記録する BOOST_LOG_SEV(lg, severity_level::info) << "flag is false"; } BOOST_LOG_SEV(lg, severity_level::error) << "Some error occurs!!" } } // namespace mod
20.
ログのフィルタリング placeholderを使用する logging::core::get()->set_filter( logging::trivial::severity >= logging::trivial::info
// lambda-exp. );
21.
ログのフィルタリング fluentd以降で解析する以上、C++側でフィルターする 意義はあまりない
22.
ログの出力 様々な出力形式に対応 /* 文字列フォーマット */ logging::add_file_log( keywords::file_name
= "client.log", keywords::format = "%Tag%: [%TimeStamp%] [%Scope%] %Message%" ); /* lambda-style */ logging::add_file_log( keywords::file_name = "stream_format.log", keywords::format = ( expr::stream << mod::tag_attr << mod::line_id << ": <" << mod::severity << "> [" << mod::scope << "] " << expr::smessage ) );
23.
ログの出力 int main() { init();
// いろいろ初期化 mod1::func1(true); mod1::func1(false); return 0; } mod: [2015-Mar-04 01:38:57.711251] [void mod::func(bool)->true case mod: [2015-Mar-04 01:38:57.711620] [void mod::func(bool)] Some error occur mod: [2015-Mar-04 01:38:57.711667] [void mod::func(bool)->false case mod: [2015-Mar-04 01:38:57.711698] [void mod::func(bool)] Some error occur
24.
ログの出力 どのようなフォーマットを使用するか? LTSV (Labeled Tab-Separated
Values) damp/parseが簡単 属性を追加するのが簡単 型は無く、全て文字列 解析側で型を戻す必要がある JSON formatが少し面倒
25.
ログの出力 typedef std::vector<std::pair<std::string, std::string>
> Attrs; void add_file_log(std::string filename, const Attrs &attr, bool auto_flush std::stringstream ss; for (auto &&pair : attr) { const std::string &key = pair.first; const std::string &val = pair.second; if (!ss.str().empty()) ss << "t"; ss << key << ":%" << val << "%"; } logging::add_file_log( keywords::file_name = filename, keywords::format = ss.str(), keywords::auto_flush = auto_flush ); }
26.
ログの出力 デバッグ時に属性を追加するのが簡単 BOOST_LOG_SEV(lg, KSE::info) << "update
infost" << "new_max_index:" << max_index << "t" << "step:" << (t / interval) << "t" << "count:" << count;
27.
COMPILE WITH CMAKE find_package(Boost
COMPONENTS thread system log log_setup REQUIRED) find_package(Threads) add_definitions("-DBOOST_LOG_DYN_LINK") macro(logged_executable name) add_executable(${name} ${name}.cpp) target_link_libraries( ${name} ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ARGN} ) endmacro(logged_executable)
28.
説明できなかった事 LTSVへの自動的なフォーマット channel fluentd側での解析例
29.
BOOST.LOGを使いたい理由 Boostに入ってる 高機能 実行時のオーバーヘッドが小さい(未確認)
30.
BOOST.LOGを使いたくない理由 placeholder難しい コンパイル遅い
31.
THE END - Source
codes (GitHub)
Télécharger maintenant