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よりも低いレベルのログメッセージを出力しないように思われるという最初のレスポンダーの提案をテストして発見しました!
ビルトイン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")
私はこの記事が新しいものではないことを知っていますが、誰かにとって役に立つかもしれません。
# 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)