From e2817cf6ce075075ddc07f8629c75c241186d1ad Mon Sep 17 00:00:00 2001 From: Vincent Zhang Date: Thu, 22 Aug 2024 13:52:29 +0800 Subject: [PATCH 1/2] Add `dfx canister logs` command usage. --- .../docs/getting-started/use-dfx/index.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docusaurus/docs/getting-started/use-dfx/index.md b/docusaurus/docs/getting-started/use-dfx/index.md index a9634a4..af05b2f 100644 --- a/docusaurus/docs/getting-started/use-dfx/index.md +++ b/docusaurus/docs/getting-started/use-dfx/index.md @@ -621,6 +621,27 @@ Controllers: r7inp-6aaaa-aaaaa-aaabq-cai Module hash: 0x3eadce8399b6bc9450bfb8bb54adefc1e27b2564146684d4c6d41a62c4110b73 ``` +### 查看容器日志 {#canister-logs} + +`dfx canister logs` 命令可以显示容器的日志。它的基本用法如下: + +``` +dfx canister logs +``` + +下面是一个示例,显示来自 `hello_world` 容器的日志。 + +``` +dfx canister logs hello_world +``` + +该命令将显示类似于以下内容的输出: + +``` +[0. 2024-06-04T21:14:25.882276Z]: Some text message +[1. 2024-06-04T21:18:18.094003Z]: (bytes) 0xc0ffee +``` + ### 安装容器代码 {#canister-install} `dfx canister install` 命令可以用来安装容器代码。它的基本用法如下: From 1a326e6ede35297fc30b3091ee82aeb48393e8d2 Mon Sep 17 00:00:00 2001 From: Vincent Zhang Date: Thu, 22 Aug 2024 16:05:51 +0800 Subject: [PATCH 2/2] Add example for canister logs. --- .../canister-logs/img/canister-logs.jpg | Bin 0 -> 60411 bytes .../code-examples/canister-logs/index.md | 148 ++++++++++++++++++ .../getting-started/code-examples/index.md | 6 +- docusaurus/sidebars.js | 1 + 4 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 docusaurus/docs/getting-started/code-examples/canister-logs/img/canister-logs.jpg create mode 100644 docusaurus/docs/getting-started/code-examples/canister-logs/index.md diff --git a/docusaurus/docs/getting-started/code-examples/canister-logs/img/canister-logs.jpg b/docusaurus/docs/getting-started/code-examples/canister-logs/img/canister-logs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d85ff7f7b643d89be2b02e2fb25fad86b5fbcad GIT binary patch literal 60411 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â=KrF?3^D9@*>>?Mz|m&euZ}C(6zYm?G$K? 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 = RefCell::default(); +} + +#[ic_cdk::update] +fn produce_logs() { + // print the counter value + COUNTER.with_borrow_mut(|counter| { + println!("counter: {}", *counter); + *counter += 1; + }); +} + +export_candid!(); +``` + +该代码定义了一个计数器 `COUNTER`,并通过 `produce_logs` 方法更新计数器、并输出日志。 + +### 更新 Candid 文件 + +由于我们更新了容器接口,我们需要更新对应的 `candid` 文件。请参照[该文档](https://internetcomputer.org/docs/current/developer-docs/backend/rust/generating-candid) 进行更新。 + +基本步骤如下: + +- 执行如下脚本安装 `candid-extractor` 工具。 + ```bash + cargo install candid-extractor` + ``` +- 执行如下脚本编译容器。 + ```bash + cargo build --release --target wasm32-unknown-unknown --package canister_logs_backend + ``` +- 执行如下脚本导出新的 candid 文件。 + ```bash + candid-extractor target/wasm32-unknown-unknown/release/canister_logs_backend.wasm > canister_logs_backend.did + ``` +- 替换 `src/canister_logs_backend/canister_logs_backend.did` 文件。 + +## 本地部署 {#deploy} + +完成代码更新后,您可以执行以下脚本将您的容器部署到 IC 的本地开发环境。 + +```bash +dfx start --background +dfx deploy +``` + +如果成功,您将会看到类似如下的输出信息: + +```bash +... +Deployed canisters. +URLs: + Backend canister via Candid interface: + canister_logs_backend: http://127.0.0.1:4943/?canisterId=a3shf-5eaaa-aaaaa-qaafa-cai&id=asrmz-lmaaa-aaaaa-qaaeq-cai +... +``` + +## 测试 {#test} + +您可以调用 `canister_logs_backend` 容器的 `produce_logs` 方法来递增计数器,并获得以下命令行输出: + +```bash +dfx canister call canister_logs_backend produce_logs +2024-06-04 21:14:25.882276 UTC: [Canister asrmz-lmaaa-aaaaa-qaaeq-cai] counter: 0 +() +dfx canister call canister_logs_backend produce_logs +2024-06-04 21:18:18.094003 UTC: [Canister asrmz-lmaaa-aaaaa-qaaeq-cai] counter: 1 +() +dfx canister call canister_logs_backend produce_logs +2024-06-04 21:18:46.036022 UTC: [Canister asrmz-lmaaa-aaaaa-qaaeq-cai] counter: 2 +() +``` + +然后您可以通过 `dfx canister logs` 查看容器日志: + +```bash +dfx canister logs canister_logs_backend +[0. 2024-06-04T21:14:25.882276Z]: counter: 0 +[1. 2024-06-04T21:18:18.094003Z]: counter: 1 +[2. 2024-06-04T21:18:46.036022Z]: counter: 2 +``` + +以上教程展示了 Rust 中最基本的容器日志用法。您也可以参考 DFINITY 基金会的官方示例、分别查看 [Rust](https://github.com/dfinity/examples/tree/master/rust/canister_logs) 和 [Motoko](https://github.com/dfinity/examples/tree/master/motoko/canister_logs) 版本。 + + diff --git a/docusaurus/docs/getting-started/code-examples/index.md b/docusaurus/docs/getting-started/code-examples/index.md index 1f5838b..adbd3df 100644 --- a/docusaurus/docs/getting-started/code-examples/index.md +++ b/docusaurus/docs/getting-started/code-examples/index.md @@ -35,6 +35,10 @@ IC 提供了很多范例供开发者参考。以下所有的示例都开源, ## 可认证变量 {#certified-variables} -[可认证变量](./certified-variables/index.md) 示例介绍了如何使用互联网计算机 (IC) 的可认证变量功能。 +[可认证变量](./certified-variables/index.md)示例介绍了如何使用互联网计算机 (IC) 的可认证变量功能。 + +## 容器日志 {#canister-logs} + +[容器日志](./canister-logs/index.md)示例演示了如何使用互联网计算机 (IC) 的容器日志功能。 ## To be continued diff --git a/docusaurus/sidebars.js b/docusaurus/sidebars.js index 6b9cec5..39e0338 100644 --- a/docusaurus/sidebars.js +++ b/docusaurus/sidebars.js @@ -39,6 +39,7 @@ const sidebars = { "getting-started/code-examples/https-outcalls/index", "getting-started/code-examples/certified-variables/index", "getting-started/code-examples/dfx-dependencies/index", + "getting-started/code-examples/canister-logs/index", ] }, ],