Log to stderr by default. (#1266)
Change the default from file-per-thread-logger to pretty-env-logger, which is more common in Rust projects, and change the option from `-d` to `--log-to-files`.
This commit is contained in:
26
docs/cli-logging.md
Normal file
26
docs/cli-logging.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# Logging in the `wasmtime` CLI
|
||||||
|
|
||||||
|
Wasmtime's libraries use Rust's [`log`] crate to log diagnostic
|
||||||
|
information, and the `wasmtime` CLI executable uses [`pretty_env_logger`]
|
||||||
|
by default for logging this information to the console.
|
||||||
|
|
||||||
|
Basic logging is controlled by the `RUST_LOG` environment variable. For example,
|
||||||
|
To enable logging of WASI system calls, similar to the `strace` command on Linux,
|
||||||
|
set `RUST_LOG=wasi_common=trace`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ RUST_LOG=wasi_common=trace wasmtime hello.wasm
|
||||||
|
[...]
|
||||||
|
TRACE wasi_common::hostcalls_impl::fs > fd_write(fd=1, iovs_ptr=0x10408, iovs_len=1, nwritten=0x10404)
|
||||||
|
Hello, world!
|
||||||
|
TRACE wasi_common::hostcalls_impl::fs > | *nwritten=14
|
||||||
|
TRACE wasi_common::hostcalls > | errno=ESUCCESS (No error occurred. System call completed successfully.)
|
||||||
|
TRACE wasi_common::hostcalls_impl::misc > proc_exit(rval=1)
|
||||||
|
```
|
||||||
|
|
||||||
|
Wasmtime can also redirect the log messages into log files, with the
|
||||||
|
`--log-to-files` option. It creates one file per thread within Wasmtime, with
|
||||||
|
the files named `wasmtime.dbg.*`.
|
||||||
|
|
||||||
|
[`log`]: https://crates.io/crates/log
|
||||||
|
[`pretty_env_logger`]: https://crates.io/crates/pretty_env_logger
|
||||||
@@ -20,5 +20,5 @@ $ wasmtime --invoke _start foo.wasm
|
|||||||
```
|
```
|
||||||
|
|
||||||
For more information be sure to check out [how to install the
|
For more information be sure to check out [how to install the
|
||||||
CLI](cli-install.md) as well as [the list of options you can
|
CLI](cli-install.md), [the list of options you can
|
||||||
pass](cli-options.md).
|
pass](cli-options.md), and [how to enable logging](cli-logging.md).
|
||||||
|
|||||||
@@ -89,11 +89,11 @@ pub struct RunCommand {
|
|||||||
impl RunCommand {
|
impl RunCommand {
|
||||||
/// Executes the command.
|
/// Executes the command.
|
||||||
pub fn execute(&self) -> Result<()> {
|
pub fn execute(&self) -> Result<()> {
|
||||||
if self.common.debug {
|
if self.common.log_to_files {
|
||||||
pretty_env_logger::init();
|
|
||||||
} else {
|
|
||||||
let prefix = "wasmtime.dbg.";
|
let prefix = "wasmtime.dbg.";
|
||||||
init_file_per_thread_logger(prefix);
|
init_file_per_thread_logger(prefix);
|
||||||
|
} else {
|
||||||
|
pretty_env_logger::init();
|
||||||
}
|
}
|
||||||
|
|
||||||
let config = self.common.config()?;
|
let config = self.common.config()?;
|
||||||
|
|||||||
@@ -54,11 +54,11 @@ impl WasmToObjCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn handle_module(&self) -> Result<()> {
|
fn handle_module(&self) -> Result<()> {
|
||||||
if self.common.debug {
|
if self.common.log_to_files {
|
||||||
pretty_env_logger::init();
|
|
||||||
} else {
|
|
||||||
let prefix = "wasm2obj.dbg.";
|
let prefix = "wasm2obj.dbg.";
|
||||||
init_file_per_thread_logger(prefix);
|
init_file_per_thread_logger(prefix);
|
||||||
|
} else {
|
||||||
|
pretty_env_logger::init();
|
||||||
}
|
}
|
||||||
|
|
||||||
let cache_config = if self.common.disable_cache {
|
let cache_config = if self.common.disable_cache {
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ pub struct WastCommand {
|
|||||||
impl WastCommand {
|
impl WastCommand {
|
||||||
/// Executes the command.
|
/// Executes the command.
|
||||||
pub fn execute(&self) -> Result<()> {
|
pub fn execute(&self) -> Result<()> {
|
||||||
if self.common.debug {
|
if self.common.log_to_files {
|
||||||
pretty_env_logger::init();
|
|
||||||
} else {
|
|
||||||
let prefix = "wast.dbg.";
|
let prefix = "wast.dbg.";
|
||||||
init_file_per_thread_logger(prefix);
|
init_file_per_thread_logger(prefix);
|
||||||
|
} else {
|
||||||
|
pretty_env_logger::init();
|
||||||
}
|
}
|
||||||
|
|
||||||
let config = self.common.config()?;
|
let config = self.common.config()?;
|
||||||
|
|||||||
@@ -88,9 +88,9 @@ struct CommonOptions {
|
|||||||
#[structopt(long, conflicts_with = "lightbeam")]
|
#[structopt(long, conflicts_with = "lightbeam")]
|
||||||
cranelift: bool,
|
cranelift: bool,
|
||||||
|
|
||||||
/// Enable debug output
|
/// Log to per-thread log files instead of stderr.
|
||||||
#[structopt(short, long)]
|
#[structopt(long)]
|
||||||
debug: bool,
|
log_to_files: bool,
|
||||||
|
|
||||||
/// Generate debug information
|
/// Generate debug information
|
||||||
#[structopt(short = "g")]
|
#[structopt(short = "g")]
|
||||||
|
|||||||
Reference in New Issue
Block a user