1. ログを画面に出力するだけです
logging をインポートします
logging.debug('これはデバッグ メッセージです')
logging.info('これは情報メッセージです')
logging.warning('これは警告メッセージです' )
画面に印刷:
WARNING:root:これは警告メッセージです
デフォルトでは、ログは画面にログを出力し、ログレベルは警告です
ログレベルのサイズ関係は次のとおりです: CRITICAL >エラー >
警告 > 情報 > デバッグ > ログ レベルを自分で定義することもできます。
2.logging.basicConfig 関数を使用して、ログの出力形式と方法を設定します。
logging.basicConfig(level=logging.DEBUG,
) line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
', I filemode =' w ')
Logging.debug (' これはデバッグメッセージです')
logging.info (' これはインコ メッセージです ')
logging.warning (' これは警告メッセージです ') g
./myapp.log ファイルの内容は次のとおりです:
Sun, 2009 年 5 月 24 日21:48:54 Demon2.py[line:11] DEBUG これはデバッグ メッセージです
Sun, 24 May 2009 21:48:54 Demon2.py[line :12] INFO これは情報メッセージです
Sun, 24 May 2009 21: 48:54 Demon2.py[line:13] WARNING これは警告メッセージです
logging.basicConfig 関数のパラメータ:
filename: ログ ファイル名を指定します
filemode:
これは file 関数と同じ意味を持ち、ログ ファイルのオープン モード、'w' または 'a'
%(levelno)s: ログ レベルの値を出力します。
%(levelname)s:
ログ レベル名を出力します
%(pathname)s: 現在実行中のプログラムのパス (実際には sys.argv[0]
%(filename)s) を出力します。
現在実行中のプログラム名を出力します
%(funcName)s: ログの現在の関数を出力します
%(lineno)d: ログの現在の行番号を出力します
%(asctime)s:
ログを出力する時間
%(thread)d: スレッドIDを出力
%(threadName)s: スレッド名を出力
%(PROcess)d: プロセスIDを出力
%(message)s:
ログ情報を出力します
datefmt: time.strftime() と同じ時間形式を指定します
level:
ログ レベルを設定します。デフォルトはlogging.WARNING
stream:
ログの出力ストリームを指定します。出力先を sys.stderr、sys.stdout、またはファイルに指定できます。ストリームとファイル名を同時に指定すると、ストリームは無視されます。 3. ログをファイルとファイルに同時に出力します
importlogging
logging.basicConfig(level=logging.DEBUG,
datefmt='%a, %d %b %Y %H:%M:%S',
filename='myapp.log', filemode='w')######### ################################### ############# ##################################### #StreamHandler を INFO レベル以上に定義します ログ情報は標準エラーに出力され、現在のログ処理オブジェクトに追加されます #console =logging.StreamHandler()
console.setLevel(logging.INFO)
formatter =logging.Formatter('% (名前)-12s: % (レベル名)-8s %(メッセージ)s')
console.setFormatter(フォーマッタ)
logging.getLogger('').addHandler(コンソール)######### ####### ########################################### ##### ###########################
logging.debug('これはデバッグ メッセージです')
logging.info ('これは情報メッセージです')
logging.warning('これは警告メッセージです')
画面に印刷:
root : INFO これは情報メッセージです
root : WARNING これは警告メッセージです
./myapp.ログ ファイルの内容は次のとおりです:
Sun, 24 May 2009 21:48:54 Demon2.py[line:11] DEBUG これはデバッグ メッセージです
Sun, 24 May 2009 21:48:54 Demon2.py[line:12] INFOこれは情報メッセージです
Sun, 24 May 2009 21:48:54 Demon2.py[line:13] WARNING これは警告メッセージです
4.logging log rollback
importloggingfromlogging.handlers import RotatingFileHandler######################################## ## ############################################## #### ##RotatingFileHandler を定義して、最大 5 つのログ ファイルをバックアップします。各ログ ファイルの最大数は 10MRthandler = RotatingFileHandler('myapp.log', maxBytes=10*1024*1024,backupCount=5)
Rthandler.setLevel(logging . INFO)
formatter =logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
Rthandler.setFormatter(formatter)
logging.getLogger('').addHandler(Rthandler ) ############################################# ### ##########################################
からわかるように、上記の例とこの例では、logging にはログ処理のためのメイン オブジェクトがあり、その他の処理メソッドは addHandler によって追加されます。
ロギングのためのいくつかのハンドル メソッドは次のとおりです:
logging.StreamHandler: ログはストリームに出力され、sys.stderr、sys.stdout、またはファイルに出力されます。logging.FileHandler: ログはファイルに出力されます。実際の使用では、RotatingFileHandler と TimedRotatingFileHandler が使用されます。 logging.handlers.BaseRotatingHandlerlogging.handlers.RotatingFileHandler logging.handlers.TimedRotatingFileHandler
logging.handlers.SocketHandler: リモートでログを TCP/ip ソケットに出力します
logging.handlers.DatagramHandler: UDP ソケットへのリモート出力ログ
logging.handlers.SMTPHandler: リモートからメールアドレスにログを出力します
logging.handlers.SysLogHandler: syslog
logging.handlers.NTEventLogHandler へのログ出力: Windows NT/2000/XP のイベント ログにログをリモート出力します
logging.handlers.MemoryHandler: ログはメモリ内の指定されたバッファに出力されます
logging.handlers.HTTPHandler: 「GET」または「POST」による HTTP サーバーへのリモート出力
StreamHandler と FileHandler は一般的に使用されるログ処理メソッドであるため、これらはログ モジュールに直接含まれていますが、他のメソッドはlogging.handlers モジュールに含まれています。上記その他の処理方法についてはpython2.5のマニュアルを参照してください!
5.logging.config モジュールを使用してログを設定します
keys=root,example01,example02
[logger_root]
level=DEBUG
handlers=hand01,hand02
[logger_example01]
handlers= hand01 ,hand02
qualname=example01
propagate=0
[logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0
################ # ######################## [ハンドラー]
keys=hand01,hand02,hand03
[handler_hand01]
class=StreamHandler
レベル=INFO
args=(sys.stderr,)
[handler_hand02]class=FileHandler
level=DEBUG
formatter=form01
args=('myapp.log', 'a')
[ handler_hand03] class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args=('myapp.log', 'a', 10*1024*1024, 5)
############ ## ############################### [フォーマッタ]
keys=form01,form02
[formatter_form01]
format=%( asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:% S
[ formatter_form02]
format=%(name)-12s: %(levelname)-8s %(message)s
datefmt=
importloggingimportlogging.config
logging.config.fileConfig("logger.conf")
logger = ロギング.getLogger("example01")
logger.debug('これはデバッグメッセージです')
logger.info('これは情報メッセージです')
logger.warning('これは警告メッセージです')
importloggingimportlogging.config
logging.config.fileConfig("logger.conf")
logger =logging.getLogger("example02")
logger.debug('これはデバッグメッセージです')
logger.info('これは情報メッセージです')
logger.warning('This is warning message')
6. ロギングはスレッドセーフです