上の「UncleWheat」をクリックして「Top/ StarPublicAccount」を選択してください
福祉乾物、お早めにお届け
みなさん、こんにちは。私はウィートです。システムの開発と調整の過程でログシステムが重要です。
特にプロジェクトで問題が発生した後、問題を特定するのに役立つログがないことは非常に苦痛であることを誰もが知っておく必要があります。
プログラムをデバッグするためにデバッガーを常にステップ実行できるとは限らないため、デバイスの実行ログは特に重要です。
通常、ログには次の要件があります。
さまざまなログレベル(
Debug
、、、、);Warning
Info,
Error
Fatal
ログ印刷は、次のよう
printf
に簡単に使用できる必要があります。ログレベルを設定する機能。
小さな足跡;
構成可能で、ロギングも無効にできます。
さまざまなログレベルに基づく色の強調表示をサポートします。
構成、タイムスタンプをカスタマイズできます。
RTOSをサポートします。
上記は比較的基本的な機能ですが、組み込みデバイスでは、デバイスの実行ログを保存したい場合があり、次の機能のいくつかが必要です。
組み込みファイルシステムに保存するシリアル端末などの複数のアクセス方法をサポートします。
シリアル端末を介してアクセスするためのシェルコマンドラインをサポートします。
これらの要件のすべてが満たされるわけではありません。
一般的に使用されるものに加えてlog4c
、log4cpp
ここにあなたに推奨される3つの非常に優れたオープンソースログライブラリがあります。これらはシングルチッププロジェクトでの使用により適しています。最初の軽量から後部の機能豊富なものまで、最後のものは非常に強力ですので、最後まで我慢してください。
rxi_log
プロジェクトアドレス:https://github.com/rxi/log.c
C99に基づいて実装された単純なログライブラリ。具体的な出力は次のとおりです。
特定の使用法
log.c
およびをソースコードに統合log.h
してプロジェクトに組み込むことができます。ログを印刷する必要がある場合は、以下に示すように、次のAPIを呼び出すことができます。
log_trace(const char *fmt, ...);
log_debug(const char *fmt, ...);
log_info(const char *fmt, ...);
log_warn(const char *fmt, ...);
log_error(const char *fmt, ...);
log_fatal(const char *fmt, ...);
これらのAPIの他に、、などがあります。log_set_quiet
詳細については、元のプロジェクトを参照してください。log_set_lock
LOG_USE_COLOR
ステーク
プロジェクトアドレス:https://github.com/rdpoor/ulog
uLogは、組み込みマイクロコントローラーまたはリソースに制約のあるシステムに構造化されたロギングメカニズムを提供します。これは、人気Log4c
のプラットフォームのLog4j
背後にあるいくつかの概念を継承していますが、オーバーヘッドは低くなっています。
uLogのいくつかの機能:
uLogは、ほとんどすべての環境に簡単に統合でき、1つのヘッダーと1つのソースファイルで構成され、純粋なCで記述されます。
uLogは、おなじみの重大度レベル(CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE)を提供します。
uLogは、複数のユーザー定義出力(コンソール、ログファイル、メモリバッファーなど)をサポートし、それぞれに独自のレポートしきい値レベルがあります。
uLogは「積極的に独立」しており、依存関係は最小限で、stdio.h、string.h、およびstdarg.hのみが必要です。
uLogを使用しない場合、邪魔になりません。コンパイル時にULOG_ENABLEDが未定義の場合、ロギングコードは生成されません。
uLogは十分にテストされています。詳細については、付属のulog_test.cファイルを参照してください。
EasyLogger
プロジェクトアドレス:https://github.com/armink/EasyLogger
私はこのプロジェクトを長い間使ってきたので、強くお勧めします。RTOSに統合されたRT-Threadの作品です。サポートされている機能は非常に豊富で、基本的にさまざまな開発のニーズを満たしています。
機能は次のとおりです。
轻量,ROM<1.6K, RAM<0.3K;
複数のアクセスモードをサポートします(例:ターミナル、ファイル、データベース、シリアルポート、485、フラッシュ...);
ログの内容には、レベル、タイムスタンプ、スレッド情報、プロセス情報などを含めることができます。
スレッドセーフで、非同期出力モードとバッファ出力モードをサポートします。
さまざまなオペレーティングシステム(RT-Thread、UCOS、Linux、Windows ...)をサポートし、ベアメタルプラットフォームもサポートします。
ログはRAW形式をサポートし、hexdumpをサポートします。
タグ、レベル、キーワードによる動的フィルタリングをサポートします;
ログの各レベルは、異なる色の表示をサポートしています。
これは非常に拡張性が高く、プラグインの形で新しい機能の拡張をサポートします。
上記はこのプロジェクトのほんの一部です。詳細については、プロジェクトのアドレスを参照してください。
まとめ
通常の開発でのログの使用に注意を払い、開発段階ごとに異なるレベルのログを設定し、モジュールごとにモジュールログを設定して、問題の特定を容易にし、問題を迅速に解決し、効率を向上させることを願っています。 。この号の記事はこちらです。次号でお会いしましょう。
- 終わり -
過去に推奨
ヘッダーファイルの大学は、C言語がこれらの原則に注意を払う必要があることを求めています...
実際の戦闘で要約された7つのCプログラム、良いものは隠されていません
上のカードをクリックしてフォローしてください
あなたが注文したものはすべて良さそうです、私はそれが好きなのでそれを真剣に受け止めます