ロギパチ

Pythonのための正統派のロギング
今すぐダウンロード

ロギパチ ランキングとまとめ

広告

  • Rating:
  • ライセンス:
  • BSD License
  • 価格:
  • FREE
  • 出版社名:
  • Michal Hordecki
  • 出版社のWebサイト:
  • http://github.com/MHordecki

ロギパチ タグ


ロギパチ 説明

Pythonのための不適合ロギング LogPyは緩くLispのlog5に基づく標準のPythonロギング機能、のための代替です。したがって、私はSTDLIBのログと比較すると、それはpossible.The主な違いなどとして最も透明になりたかったタグベースのアーキテクチャである - KISSの原則に基づいています。ロギングでは、各ログは、(それをデバッグすること、エラー、等)は、特定のレベルを割り当てました。それで全部です。 LogPyは、他の一方で、スポーツタグ - あなたは各メッセージに短い文字列を添付することができます。タグは、物事の様々なを表すことができます:重大度レベル、モジュール名、またはいくつかのカスタムログcategorization.LogPyは、Python 2.6以降が必要です。それは.Getting startedUsing LogPyが死んで簡単です(実際には、それは念頭に置いて開発py3kだし、その後はPython 2.6にバックポート)すぎのPython 3でシームレスに動作します:logpyインポートからLogPyimportのsyslog = LogPy()log.add_output(sys.stderr.write )ログ( 'デバッグ')( 'Hello Worldの!')出来上がり! LogPyインスタンスは、呼び出し可能です。出力するログ、コールログ「倍」 - 最初の呼び出しでのログのすべてのタグを通過し、2つ目に渡されたすべてのものは、メッセージの一部とみなされます。例の意志の出力は標準エラー出力に記録します。簡単には、hoodLogPyは、抽象化のいくつかの層があるの下ではありません:?1. LogPyを - それは、ユーザからデータを受け取るMessageインスタンスにそれらを組み合わせて、すべての出力にそれらを渡します。 2.出力は - それはいくつかの事前に定義された条件に基づいてメッセージをフィルタリングし、メッセージはそれらをすべて通過すれば、それはフォーマッタでフォーマットしてから実際の出力に渡されます。 3.フォーマッタ - メッセージと形式を取る。)(標準の実装では、ジョブのString.Formatのを使用します)。 4.実際の出力 - 呼び出し可能な例えば、screen.Allにフォーマッタの出力を出力し、それがこれらの層は、/オブジェクトは、おそらくそれらのそれぞれにいくつかのログをフィルタしたい、callables.Common tasksOutput filteringWith複数の出力です。支持体は、そのためにそこにある:ログ= LogPy()log.add_output(my_output、フィルタ=ラムダM:m.tagsにおける 'エラー'):log.add_output(my_output、フィルタ=ラムダM:#相当する 'エラー' であなたが見ることができるようにm.tags])、フィルタは、引数としてMessageオブジェクトを取得し、ブール値を返し、呼び出し可能です。複数のフィルタはどちらの形式の文字列を置換することによって、または完全にフォーマットするオブジェクトを置き換えることによって、書式設定をカスタマイズすることができますlist.Custom formattingYouによって提供することができます。あなたのchoice.Custom形式stringThis 1は、ニーズの90%を満たしています。 (直接出力オブジェクトをインスタンス化するときも可能)あなたはLogPyのadd_outputメソッドにキーワード引数を使ってフォーマット文字列を変更することができます。log.add_output(...、フォーマッタ=「私のカスタムフォーマット文字列を!」)メッセージを処理し、メソッドの形式を文字列の次、定義済みの引数で呼び出されます:*日付 - 日付時刻オブジェクトは*タグ - タグをスペースで区切ったリスト(文字列)*引数 - メッセージの引数のリスト* kwargsから - メッセージ中のキーワード引数の辞書*メッセージ - 実際のメッセージオブジェクト。彼らはこのように、このobject.Defaultフォーマット文字列のルックスのすべての属性であるとして、上記のすべての引数は、実際には単なる糖衣構文です:{日付}:{タグ}:{引数} {kwargsからは} に改行を入れることを忘れnDon't終了、または複数のモジュールでLogPyを使用しながら、複数のmodulesYouでcrippled.Workingになりますあなたのログは、タグのいくつかの事前に定義することによって自分自身を助けることができる:#メインmodulelog = LogPy()#子供moduleimport mainmodulelog = mainmodule.log( 'モジュール:childmoduleを」さて、カレー= TRUE)#:ログ( 'デバッグ')( 'Hello Worldの')#は同等tolog(は 'モジュール:!childmodule'、 'デバッグ')( 'Hello Worldの')したいカスタムフォーマットobjectInケース>合理的ないろいろ書い:passclassメッセージ - クラスフォーマッタ:::DEF __call __(メッセージメッセージ)オブジェクトは単純なプロトコルに準拠する必要がありフォーマッタlog.add_output(...、フォーマッタ= my_formatter_object): - フルパワーあなたは、フォーマッタ、デフォルトを取り除くことができます:タグ=セット(STR)引数= []#ユーザ日付によって渡されたユーザkwargsから= {}#によって渡さ= datetime.datetimeの(私は考えのWHを有していませんzope.interfaceのようなもののほかに、Pythonでのプロトコルを記述するための標準の正式な表記法があるかどうatsoever。私は私のとりとめが明確であることを望む)どこに何か合理的な手段を:。(音ちょっと愚かな)出力の出力によって受け入れられるすべてのものを - それは通常あなたobjectIfスクラップを50%にしている喜んでstrのではなく、always.Custom出力を意味し、 LogPyのLOCを、そうすること自由に感じ:(...)log.add_output#等価tolog.add_raw_output(出力(:log.add_raw_output(my_customized_output_object)の価値が言及がLogPy.add_outputはただのラッパーであるという事実です。 ...))出力プロトコルルックス次のようにクラスの出力:デフ__call __(メッセージ:メッセージを):passInつまり:あなたはuser.Noteによって発行されたすべてのログで呼び出されます:ください、不変オブジェクトとして扱うのメッセージ - 彼らはされていますすべてOutputs.Thread safetyLogPyのために再利用するには、いくつかの基本的なスレッドの安全性を採用します。 threading.LockはLogPyの__call__方法で使用されています。これは、簡単に交換することができる。インポートRLocklog = LogPy()log.lock = RLOCK()要件スレッドから。 ・Python


ロギパチ 関連ソフトウェア