web-dev-qa-db-ja.com

AWS Glueの出力ログにメッセージを書き込むにはどうすればよいですか?

AWS Glueジョブは、デフォルトで_/aws-glue/jobs/error_と_/aws-glue/jobs/output_の2つの異なるCloudWatchログに出力とエラーを記録します。デバッグ用にスクリプトにprint()ステートメントを含めると、エラーログ(_/aws-glue/jobs/error_)に書き込まれます。

私は使用してみました:

_log4jLogger = sparkContext._jvm.org.Apache.log4j 
log = log4jLogger.LogManager.getLogger(__name__) 
log.warn("Hello World!")
_

しかし、「Hello World!」実行したテストジョブのログのいずれにも表示されません。

出力ログ(_/aws-glue/jobs/output_)にデバッグログステートメントを書き込む方法を知っている人はいますか?

TIA!

編集:

上記が実際に機能することがわかります。起こっていたのは、コマンドとFキーの組み合わせをキャプチャし、現在のスクリプトでのみ検索するAWS Glue Scriptエディターウィンドウでジョブを実行していたことです。したがって、ページ内でログ出力を検索しようとすると、ログが記録されていないように見えました。

注:AWS GlueスクリプトはWARNよりも低いレベルのログメッセージを出力しないように思われるという最初のレスポンダーの提案をテストして発見しました!

11
Jesse Clark

ビルトインpython loggingモジュールのロガーを使用してみてください。デフォルトでは、標準出力ストリームにメッセージを書き込みます。

import logging

MSG_FORMAT = '%(asctime)s %(levelname)s %(name)s: %(message)s'
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
logging.basicConfig(format=MSG_FORMAT, datefmt=DATETIME_FORMAT)
logger = logging.getLogger(<logger-name-here>)

logger.setLevel(logging.INFO)

...

logger.info("Test log message")
8
Alexey Bakulin

私はこの記事が新しいものではないことを知っていますが、誰かにとって役に立つかもしれません。

# create glue context
glueContext = GlueContext(sc)
# set custom logging on
logger = glueContext.get_logger()
...
#write into the log file with:
logger.info("s3_key:" + your_value)
3
Lars