Acrobat Services APIのログ取得とリクエストIDの確認方法

# はじめに

この記事ではAcrobat Services APIのログ取得方法と、サポートへの問い合わせに役立つAPIのリクエストIDの確認方法について、各環境別にご紹介します。

:::note warn
**Acrobat Services APIをFree tierでご利用の方へ**: 
Free tierでご利用の方はアドビサポートへの問い合わせはできません。サポートが必要な場合は[コミュニティ](https://community.adobe.com/)をご利用いただくか、[エンタープライズプラン](https://developer.adobe.com/document-services/pricing/main/)をご検討ください。
:::

## REST
Acrobat Services APIをRESTでご利用の場合、サーバからのレスポンスに含まれる情報が役立ちます。Response Headerのx-request-id（赤枠の部分）がリクエストIDに該当し、APIの挙動に関する問い合わせをサポートに伝える際に必要な情報となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111352/16316c7f-7c01-7b58-7a7b-74ad64bbc3b7.png)

以下はSDKをご利用の場合の各言語でのログの取得方法についての説明です。

## Java
JavaでAcrobat Services APIの詳細ログを取得するには、slf4jライブラリを利用し、com.adobe.pdfservices.operationのログレベルをDEBUGに設定します。

### 設定例
```properties:log4j2.properties
name=PropertiesConfig
appenders = console

# 全体はINFOレベルで設定
rootLogger.level = INFO
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%C] %c{1} - %msg%n

loggers = pdfservicessdk,validator

# Acrobat Services APIに対してDEBUGで設定
logger.pdfservicessdk.name = com.adobe.pdfservices.operation
logger.pdfservicessdk.level = DEBUG
logger.pdfservicessdk.additivity = false
logger.pdfservicessdk.appenderRef.console.ref = STDOUT
```
### 出力例
ログ中の２行目のDEBUGメッセージ中にrequest idがあります。
```html:console
[INFO ] 2024-10-15 17:39:25.551 [com.adobe.pdfservices.operation.internal.PDFServicesHelper] PDFServicesHelper - Started submitting Create PDF Operation job
[DEBUG] 2024-10-15 17:39:25.551 [com.adobe.pdfservices.operation.internal.PDFServicesHelper] PDFServicesHelper - Submitting Create PDF Operation job with request id e20df52a-3ee8-46f3-be28-5a0eaffd6155
[INFO ] 2024-10-15 17:39:25.553 [com.adobe.pdfservices.operation.internal.PDFServicesHelper] PDFServicesHelper - Finished submitting Create PDF Operation job
```

## Python
loggingモジュールを利用してログレベルをDEBUGに設定します。

### 設定例
```python:sample.py
import logging

logging.basicConfig(level=logging.INFO)
adobe_logger = logging.getLogger("adobe.pdfservices.operation")
adobe_logger.setLevel(logging.DEBUG)
```

### 出力例
```log:console
INFO:adobe.pdfservices.operation.internal.pdf_services_helper:Started submitting CREATE_PDF job
DEBUG:adobe.pdfservices.operation.internal.pdf_services_helper:Submitting CREATE_PDF job with request id 745797df-9e45-11ef-a91d-f4ce230572f7
```

## .Net
.NET環境では、log4netを使ってAdobe.PDFServicesSDK.coreのログをDEBUGレベルで取得できます。

### 設定例
```xml:log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<log4net>
		<root>
			<level value="INFO" />
			<appender-ref ref="console" />
		</root>
		<logger name="Adobe.PDFServicesSDK.core">
			<level value="DEBUG" />
			<appender-ref ref="console" />
		</logger>
		<appender name="console" type="log4net.Appender.ConsoleAppender">
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="[%level] %date [%logger] - %message%newline" />
			</layout>
		</appender>
	</log4net>
</configuration>
```
### 出力例
```html:console
[INFO] 2024-11-08 22:43:48,659 [Adobe.PDFServicesSDK.core.PDFServicesHelper] - Started submitting Create PDF Operation job
[DEBUG] 2024-11-08 22:43:48,659 [Adobe.PDFServicesSDK.core.PDFServicesHelper] - Submitting Create PDF Operation job with request id 6c671b8b-4b1c-4996-b8d6-ace6f2f12449
[INFO] 2024-11-08 22:43:49,340 [Adobe.PDFServicesSDK.core.PDFServicesHelper] - Finished submitting Create PDF Operation job
```
## Node.js
Node.js向けのSDKではlog4jsを使っています。実行時にアプリケーションはconfig/pdfservices-sdk-log4js-config.jsonを探し、ロギングの設定を読み取ります。このファイルが存在しない場合には、INFOレベルで出力されます。

### 設定例
```json:pdfservices-sdk-log4js-config.json
{
	"appenders": {
		"consoleAppender": {
            "_comment": "A sample console appender configuration, Clients can change as per their logging implementation",
			"type": "console",
			"layout": {
				"type": "pattern",
				"pattern": "%d:[%p]: %m"
			}
		}
	},
	"categories": {
		"default": {
			"appenders": [
				"consoleAppender"
            ],
            "_comment": "Change the logging levels as per need. info is recommended for pdfservices-node-sdk",
			"level": "debug"
		}
	}
}
```
### 出力例
```html:console
2024-11-10T16:38:14.889:[INFO]: Started submitting Create PDF Operation job
2024-11-10T16:38:14.890:[DEBUG]: Submitting Create PDF Operation job with request id defe1315-7181-4320-9ed2-afb94b050f35
2024-11-10T16:38:14.890:[INFO]: Finished submitting Create PDF Operation job
```
# 補足：サービスの稼働状況
アドビのサービスの現在の稼働状況は、https://status.adobe.com/ で確認できます。また、このページからサービスに関するアナウンスや障害時にEメールやSlackで通知を受け取るサブスクリプションを登録することもできるので、あらかじめ登録しておくと便利です。

Acrobat Servicesは 上部メニューの Document Cloud > Acrobat Servicesで確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111352/b919096a-1983-7c8b-60e4-2b372b485768.png)

# リファレンス
* Getting Started | PDF Services API | Adobe PDF Services
  https://developer.adobe.com/document-services/docs/overview/pdf-services-api/gettingstarted/

* Java Sample Code
  https://github.com/adobe/pdfservices-java-sdk-samples

* Python Sample Code
  https://github.com/adobe/pdfservices-python-sdk-samples

* .Net Sample Code
  https://github.com/adobe/PDFServices.NET.SDK.Samples

* Node.js Sample Code
  https://github.com/adobe/pdfservices-node-sdk-samples