Solidityでデバッグログを出力する方法について解説します。
Remix(Ethereum IDE)を使用していることが前提となります。
構文
デバッグログの出力方法と確認方法について、それぞれ記します。
出力方法
Solidityでデバッグログを出力するには、以下のようにします。
event/emitの記述はセットとなります。
また、イベントには複数の引数を設定できます。
event イベント名(引数1[データ型], 引数2[データ型], ..., 引数n[データ型]);
emit イベント名(値1, 値2, ..., 値n);
確認方法
Solidityでデバッグログを確認するには、“Debug”ボタン右の矢印アイコンを展開します。

そして、デバッグ内容にある“logs”の項目に注目し、“event”, “args”の値を確認します。

サンプルコード
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Test {
event DebugLogEvent(string); // 単一引数
event DebugLogEventByUser(address, string); // 複数引数
string message = "Hello World";
function printDebugLog() public {
emit DebugLogEvent(message);
}
function printDebugLogByUser() public {
emit DebugLogEventByUser(msg.sender, message);
}
}

Solidityのログ出力は少しややこしいですね。とはいえ、ログ出力はコードを書く上で必要不可欠なので、しっかりとマスターしておきましょう。