Pesquisar

ダイジェスト
· 2025年7月28日
記事
· 2025年7月27日 3m read

JDBCログの取得方法

これは InterSystems FAQ サイトの記事です。
 

JDBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。

そのような場合にJDBCドライバのクライアントログを取得することで、エラーについての詳細情報を取得することができます。

JDBCログの取得方法については以下をご参照ください。

JDBCのログ

ログを指定する際に、ディレクトリ名を含まずに直接ファイル名を指定した場合、そのアプリケーションのディレクトリにその指定したファイル名でログが出力されます。

ODBCログの様にPID毎に取得する方法は用意されていません。

JDBCログが正常に取得できている場合、以下の様な内容が書き込まれます。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
	Started At:     2025/03/27 11:52:16
	Driver Name:    com.intersystems.jdbc.IRISDriver
	Jar File Name:  intersystems-jdbc-3.9.0.jar
	Client Version: 3.9.0.0
	Compiled At:    3 June, 2024 at 07:34PM UTC
	JDBC Version:   4.2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Sent: (03/27/25-11:52:16:156) [ThreadID = 1 ] [JobNumber = -1 ] [DeviceID = 1212899836 ]
Header:
  0000:  02  00  00  00  01  00  00  00  00  00  00  00  48  53      ............HS
Message:
  0000:  43  00                                                      C.


Received: (03/27/25-11:52:16:199) [ThreadID = 1 ] [JobNumber = -1 ] [DeviceID = 1212899836 ]
Header:
  0000:  0D  00  00  00  01  00  00  00  00  00  00  00  00  00      ..............
Message:
  0000:  43  00  01  00  09  01  55  6E  69  63  6F  64  65          C.....Unicode


Sent: (03/27/25-11:52:16:199) [ThreadID = 1 ] [JobNumber = -1 ] [DeviceID = 1212899836 ]
Header:
  0000:  C5  00  00  00  03  00  00  00  00  00  00  00  43  4E      ............CN
Message:
  0000:  06  01  55  53  45  52  09  01  59  78  BA  FA  5C  3B      ..USER..Yx..\;
  000E:  DF  05  01  9E  FF  DE  0A  01  68  73  61  74  6F  63      ........hsatoc
  001C:  74  72  1C  01  6A  70  37  33  32  30  6E  6F  6E  6F      tr..jp7320nono
  002A:  2E  69  73  63  69  6E  74  65  72  6E  61  6C  2E  63      .iscinternal.c
  0038:  6F  6D  05  01  41  70  70  6F  01  06  01  4A  44  42      om..Appo...JDB
  0046:  43  1D  01  69  6E  74  65  72  73  79  73  74  65  6D      C..InterSystems
  0054:  73  2D  6A  64  62  63  2D  33  2E  39  2E  30  2E  6A      s-jdbc-3.9.0.j
  0062:  61  72  09  01  33  2E  39  2E  30  2E  30  11  01  4D      ar..3.9.0.0..M
  0070:  61  63  20  4F  53  20  58  5C  31  35  2E  33  2E  32      ac OS X\15.3.2
  007E:  30  01  4A  61  76  61  20  48  6F  74  53  70  6F  74      0.Java HotSpot
  008C:  28  54  4D  29  20  36  34  2D  42  69  74  20  53  65      (TM) 64-Bit Se
  009A:  72  76  65  72  20  56  4D  5C  32  33  2E  30  2E  31      rver VM\23.0.1
  00A8:  2B  31  31  2D  33  39  0B  01  53  48  4D  7C  7C  7C      +11-39..SHM|||
  00B6:  7C  7C  31  03  01  00  03  04  01  03  04  01  03  04      ||1...........
  00C4:  3B                                                          ;


ログの内容の解析は専門的な知識が必要となりますので、取得後インターシステムズサポートセンターまでお送りください。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2025年7月27日 4m read

ODBCログの取得方法(UNIX)

これは InterSystems FAQ サイトの記事です。
 

ODBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。

そのような場合にODBCドライバのクライアントログを有効にすることで、エラーについての詳細情報を取得することができます。

ODBCログの有効化については以下をご参照ください。

ODBCログの有効化

UNIX系のシステムの場合、上記に記載されている通り、2種類のログが取得できます。 

  • クライアント・ドライバ・ログの取得方法 以下の環境変数でトレースのオンと出力するファイルを指定します。
export IRISODBCTRACE=1
export IRISODBCTRACEFILE=/Users/user1/work/odbcclient.log
  •  ドライバマネージャのログの取得方法 ドライバマネージャのデータソース設定ファイル(ODBC.ini)に以下の様にトレースをオンにする設定とログファイルの場所と名前を指定します。

  

[ODBC Data Sources]
IRIS ODBC User = IRIS iODBC Driver

[IRIS ODBC User]
Driver      = /opt/iris/bin/libirisodbc35.so
Description = 
Host        = localhost
Namespace   = USER
UID         = _system
Password	= SYS
Protocol    = TCP
Port        = 1972
Trace		= on
TraceFile   = /Users/user1/work/iodbctrace.log

変更の反映にはODBCクライアントアプリケーションを再起動する必要があります。

クライアントのプロセス毎に個別にログを取得すつこともできます。 クライアントログが正常に取得できている場合、以下の様な内容が書き込まれます。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
	Started At: Thu Mar 27 11:02:27 2025

	Driver Name:	libirisodbc35.so
	Unicode Client Version:	2024.2.0.247.0
	Compiled at:	Jul 16 2024 09:26:07
	ODBC Version:	03.51
	Locale Setting:	ja_JP.UTF-8
	ODBC Config file:	/Library/ODBC/odbc.ini
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Warning: IRISConnect Failed to load, Error Code: 2; Reason=dlopen(irisconnect.so, 0x0002): tried: 'irisconnect.so' (relative path not allowed in hardened program), '/System/Volumes/Preboot/Cryptexes/OSirisconnect.so' (no such file), '/usr/lib/irisconnect.so' (no such file, not in dyld cache), 'irisconnect.so' (relative path not allowed in hardened program), '/usr/lib/irisconnect.so' (no such file, not in dyld cache)
--> SQLAllocHandle: (03/27/25-11:02:27:224) htype = 1, inhandle = 00000000
    --> SQLAllocEnv: (03/27/25-11:02:27:224) 
    <-- SQLAllocEnv: (03/27/25-11:02:27:224) henv = 0x1301b8000 returning 0
<-- SQLAllocHandle: (03/27/25-11:02:27:224) Returning 0, outhandle = 0x1301b8000


--> SQLSetEnvAttr: (03/27/25-11:02:27:224) henv = 0x1301b8000, Attribute=200, Value=3, StringLength=0
<-- SQLSetEnvAttr: (03/27/25-11:02:27:224) Returning 0

--> SQLAllocHandle: (03/27/25-11:02:27:224) htype = 2, inhandle = 0x1301b8000
    --> SQLAllocConnect: (03/27/25-11:02:27:224) henv = 0x1301b8000
    <-- SQLAllocConnect: (03/27/25-11:02:27:224) hdbc = 0x1300f0000 returning 0
<-- SQLAllocHandle: (03/27/25-11:02:27:224) Returning 0, outhandle = 0x1300f0000

ドライバマネージャログが正常に取得できている場合、以下の様な内容が書き込まれます。

** iODBC Trace file
** Trace started on Thu Mar 27 11:02:27 2025
** Driver Manager: 03.52.0607.1008


[000000.024585]
soffice         205384840 EXIT  SQLDriverConnect with return code 0 (SQL_SUCCESS)
		SQLHDBC           0x600002d4cf00
		SQLPOINTER        0x0
		SQLCHAR         * 0x6000017c51a8
		SQLSMALLINT       19
		SQLCHAR         * 0x16d9f9e58
				  | DSN=IRIS ODBC User;SERVER=localhost;PORT |
				  | =1972;DATABASE=USER;AUTHENTICATION METHO |
				  | D=0;UID=_system;PWD=***;STATIC CURSORS=0 |
				  | ;QUERY TIMEOUT=1                         |
		SQLSMALLINT       4095
		SQLSMALLINT     * 0x16d9f9e3e (136)
		SQLUSMALLINT      0 (SQL_DRIVER_NOPROMPT)

[000000.024666]
soffice         205384840 ENTER SQLGetInfo
		SQLHDBC           0x600002d4cf00
		SQLUSMALLINT      25 (SQL_DATA_SOURCE_READ_ONLY)
		SQLPOINTER        0x16d9f95d8
		SQLSMALLINT       511
		SQLSMALLINT     * 0x16d9f95d6

ログの内容の解析は専門的な知識が必要となりますので、取得後インターシステムズサポートセンターまでお送りください。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2025年7月27日 2m read

JSON形式のファイルを読み書きするサンプル

これは InterSystems FAQ サイトの記事です。
 

ダイナミックオブジェクトの%FromJSONFileメソッドを利用すると簡単にJSON形式のファイルの内容をダイナミックオブジェクトにコピーすることができます。

以下の形式のJSONファイルをそのメソッドを使用して取り込む例は以下のようになります。

{
    "ShipTo": {
        "City": "Tokyo",
        "Street": "Ginza",
        "PostalCode": "160-0001"
    },
    "CustomerId": 1,
    "Items": [
        {
            "ProductId": "MNT001",
            "Amount": 2
        },
        {
            "ProductId": "PC001",
            "Amount": 2
        }
    ]
}
 set tempobj = {}.%FromJSONFile("c:¥temp¥sample.json") 
 set customerid = tempobj.CustomerId           
 set iter = tempobj.Items.%GetIterator()
       
 while iter.%GetNext(.key,.val) {
   set line = {}.%FromJSON(val)
   set productid = val.ProductId
   set amount = val.Amount
 }
       
 zwrite

反対にダイナミックオブジェクトをJSON形式のファイルに書く方法は以下の様になります。

(上記の例のtempobjをそのまま出力対象として使用しています)

 set outputstream = ##class(%Stream.FileCharacter).%New()
 set outputstream.TranslateTable = "UTF8"
 set outputfilename = "C:¥temp¥sample2.json"
 set status = outputstream.LinkToFile(outputfilename)
 set status = tempobj.%ToJSON(outputstream)
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2025年7月27日 4m read

ODBCログの取得方法(Windows)

これは InterSystems FAQ サイトの記事です。
 

ODBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。

そのような場合にODBCドライバのクライアントログを有効にすることで、エラーについての詳細情報を取得することができます

ODBCログの有効化については以下をご参照ください。

ODBCログの有効化

Windowsの場合は、上記に記載されている通り、2種類のログが取得できます。

  • クライアント・ドライバのログを有効にするには、ODBCデータソースアドミニストレータで使用しているDSNの「ODBCログ」チェックボックスをチェックします。 

 

 

  • ドライバー・マネージャのログを有効にするには、[トレース]タブをクリックして[トレースの開始]ボタンをクリックします。

   

変更の反映にはODBCクライアントアプリケーションを再起動する必要があります。

既定のODBCクライアントログファイル名は IRISODBC.log で、既定の場所は C:¥Users¥Public¥Logs です。

既定のトレースログ名は、SQL.logで、既定の場所は、c:¥Users¥<ユーザー名>AppData¥Local¥Temp¥です。

(すべてのユーザーIDのコンピュータ全体のトレースをチェックしない場合)

複数回ODBCリクエストが実行された場合、上書きではなくログが追記されます。

クライアントのプロセス毎に個別にログを取得することもできます。

クライアントログが正常に取得できている場合、以下の様な内容が書き込まれます。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
	Started At: Tue Mar 25 22:44:02 2025
	Driver Name:	IrisODBC3564.DLL
	Unicode Client Version:	2024.2.0.247.0
	Compiled at:	Jul 16 2024 09:17:19
	ODBC Version:	03.51
	Locale Setting:	Japanese_Japan.932
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
LoadConnect returned: 0x4DBC0000
LoadConnect returned sm_pfnIRISconnectToHostPort: 0x4DBC6750
LoadConnect returned sm_pfnIRISconnectSend: 0x4DBC62B0
LoadConnect returned sm_pfnIRISconnectRecv: 0x4DBC5E70
LoadConnect returned sm_pfnIRISconnectClose: 0x4DBC2CA0
LoadConnect returned sm_pfnIRISconnectGetErrorCode: 0x4DBC34C0
LoadConnect returned sm_pIRISconnectGetErrorText: 0x4DBDC000
LoadConnect returned sm_pfnIRISconnectGetSecurityLevel: 0x4DBC35F0
LoadConnect returned sm_pfnIRISconnectSetSecurityLevel: 0x4DBC6670
LoadConnect returned sm_pfnIRISconnectGetSocketDescriptor: 0x4DBC3610
LoadConnect returned sm_pfnIRISconnectLoginToHostPort: 0x4DBC4AE0
LoadConnect returned sm_pfnIRISconnectGeneratePrincipalName: 0x4DBC3120
LoadConnect returned sm_pfnIRISconnectGetLicenseId: 0x4DBC3530
LoadConnect returned sm_pfnIRISconnectSetTraceFilePtr: 0x4DBC6740
LoadConnect returned sm_pfnIRISconnectGetTSClientName: 0x4DBC3620
LoadConnect returned sm_pfnIRISconnectSetLocalBindings: 0x4DBC64E0
LoadConnect returned sm_pfnIRISconnectSetMode: 0x4DBC6630
LoadConnect returned sm_pfnIRISconnectGetRdlen: 0x4DBC35E0
GetLocalizedResources: (03/25/25-22:44:02:636) Found resources for locale JPN (400) in C:\Program Files\Common Files\InterSystems\IRIS\IrisODBCJPN.DLL
--> ConfigDSNW: (03/25/25-22:44:02:636) hParent = 0x000a1350 request 2
<-- ConfigDSNW: (03/25/25-22:44:11:189) returning 1

 

トレースログが正常に取得できている場合、以下の様な内容が書き込まれます。

 


EXCEL           acec-31b4	ENTER SQLAllocHandle 
		SQLSMALLINT                  1 <SQL_HANDLE_ENV>
		SQLHANDLE           0x0000000000000000
		SQLHANDLE *         0x000002D12FAA60A0
EXCEL           acec-31b4	EXIT  SQLAllocHandle  with return code 0 (SQL_SUCCESS)
		SQLSMALLINT                  1 <SQL_HANDLE_ENV>
		SQLHANDLE           0x0000000000000000
		SQLHANDLE *         0x000002D12FAA60A0 ( 0x000002D11D6A1070)

EXCEL           acec-31b4	ENTER SQLSetEnvAttr 
		SQLHENV             0x000002D11D6A1070
		SQLINTEGER                 200 <SQL_ATTR_ODBC_VERSION>
		SQLPOINTER                 3 <SQL_OV_ODBC3>
		SQLINTEGER                  -6 

 

ログの内容の解析は専門的な知識が必要となりますので、取得後インターシステムズサポートセンターまでお送りください。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください