mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 05:02:11 +00:00
fix: default logging to stdout with configurable target (#91)
This commit is contained in:
parent
375d73e4cb
commit
f09ed7cb9a
3 changed files with 24 additions and 7 deletions
|
|
@ -24,12 +24,13 @@ sandbox-agent server [OPTIONS]
|
||||||
| `-A, --cors-allow-header <HEADER>` | all | CORS allowed header (repeatable) |
|
| `-A, --cors-allow-header <HEADER>` | all | CORS allowed header (repeatable) |
|
||||||
| `-C, --cors-allow-credentials` | - | Enable CORS credentials |
|
| `-C, --cors-allow-credentials` | - | Enable CORS credentials |
|
||||||
| `--no-telemetry` | - | Disable anonymous telemetry |
|
| `--no-telemetry` | - | Disable anonymous telemetry |
|
||||||
|
| `--log-to-file` | - | Redirect server logs to a daily log file |
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sandbox-agent server --token "$TOKEN" --port 3000
|
sandbox-agent server --token "$TOKEN" --port 3000
|
||||||
```
|
```
|
||||||
|
|
||||||
Server logs are redirected to a daily log file under the sandbox-agent data directory (for example, `~/.local/share/sandbox-agent/logs`). Override with `SANDBOX_AGENT_LOG_DIR`, or set `SANDBOX_AGENT_LOG_STDOUT=1` to keep logs on stdout/stderr.
|
Server logs print to stdout/stderr by default. Use `--log-to-file` or `SANDBOX_AGENT_LOG_TO_FILE=1` to redirect logs to a daily log file under the sandbox-agent data directory (for example, `~/.local/share/sandbox-agent/logs`). Override the directory with `SANDBOX_AGENT_LOG_DIR`, or set `SANDBOX_AGENT_LOG_STDOUT=1` to force stdout/stderr.
|
||||||
|
|
||||||
HTTP request logging is enabled by default. Control it with:
|
HTTP request logging is enabled by default. Control it with:
|
||||||
- `SANDBOX_AGENT_LOG_HTTP=0` to disable request logs
|
- `SANDBOX_AGENT_LOG_HTTP=0` to disable request logs
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@ This plan captures OpenCode TUI output and sends input via tmux so we can valida
|
||||||
|
|
||||||
## Environment
|
## Environment
|
||||||
- `SANDBOX_AGENT_LOG_DIR=/path` to set server log dir
|
- `SANDBOX_AGENT_LOG_DIR=/path` to set server log dir
|
||||||
- `SANDBOX_AGENT_LOG_STDOUT=1` to keep logs on stdout/stderr
|
- `SANDBOX_AGENT_LOG_TO_FILE=1` to redirect logs to files
|
||||||
|
- `SANDBOX_AGENT_LOG_STDOUT=1` to force logs on stdout/stderr
|
||||||
- `SANDBOX_AGENT_LOG_HTTP=0` to disable request logs
|
- `SANDBOX_AGENT_LOG_HTTP=0` to disable request logs
|
||||||
- `SANDBOX_AGENT_LOG_HTTP_HEADERS=1` to include request headers (Authorization redacted)
|
- `SANDBOX_AGENT_LOG_HTTP_HEADERS=1` to include request headers (Authorization redacted)
|
||||||
- `RUST_LOG=...` for trace filtering
|
- `RUST_LOG=...` for trace filtering
|
||||||
|
|
@ -42,7 +43,7 @@ This plan captures OpenCode TUI output and sends input via tmux so we can valida
|
||||||
```bash
|
```bash
|
||||||
tmux capture-pane -pt opencode:0.0 -S -200 > /tmp/opencode-screen.txt
|
tmux capture-pane -pt opencode:0.0 -S -200 > /tmp/opencode-screen.txt
|
||||||
```
|
```
|
||||||
6. Inspect server logs for requests:
|
6. Inspect server logs for requests (when log-to-file is enabled):
|
||||||
```bash
|
```bash
|
||||||
tail -n 200 ~/.local/share/sandbox-agent/logs/log-$(date +%m-%d-%y)
|
tail -n 200 ~/.local/share/sandbox-agent/logs/log-$(date +%m-%d-%y)
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,9 @@ struct ServerArgs {
|
||||||
|
|
||||||
#[arg(long = "no-telemetry")]
|
#[arg(long = "no-telemetry")]
|
||||||
no_telemetry: bool,
|
no_telemetry: bool,
|
||||||
|
|
||||||
|
#[arg(long = "log-to-file")]
|
||||||
|
log_to_file: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Args, Debug)]
|
#[derive(Args, Debug)]
|
||||||
|
|
@ -388,8 +391,8 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init_logging(cli: &Cli) -> Result<(), CliError> {
|
fn init_logging(cli: &Cli) -> Result<(), CliError> {
|
||||||
if matches!(cli.command, Command::Server(_)) {
|
if let Command::Server(server) = &cli.command {
|
||||||
maybe_redirect_server_logs();
|
maybe_redirect_server_logs(server);
|
||||||
}
|
}
|
||||||
|
|
||||||
let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
|
let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
|
||||||
|
|
@ -472,8 +475,20 @@ fn default_server_log_dir() -> PathBuf {
|
||||||
.unwrap_or_else(|| PathBuf::from(".").join(".sandbox-agent").join("logs"))
|
.unwrap_or_else(|| PathBuf::from(".").join(".sandbox-agent").join("logs"))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn maybe_redirect_server_logs() {
|
fn maybe_redirect_server_logs(server: &ServerArgs) {
|
||||||
if std::env::var("SANDBOX_AGENT_LOG_STDOUT").is_ok() {
|
let force_stdout = match std::env::var("SANDBOX_AGENT_LOG_STDOUT") {
|
||||||
|
Ok(value) if value == "0" || value.eq_ignore_ascii_case("false") => false,
|
||||||
|
Ok(_) => true,
|
||||||
|
Err(_) => false,
|
||||||
|
};
|
||||||
|
let log_to_file_env = match std::env::var("SANDBOX_AGENT_LOG_TO_FILE") {
|
||||||
|
Ok(value) if value == "0" || value.eq_ignore_ascii_case("false") => false,
|
||||||
|
Ok(_) => true,
|
||||||
|
Err(_) => false,
|
||||||
|
};
|
||||||
|
let log_to_file = server.log_to_file || log_to_file_env;
|
||||||
|
|
||||||
|
if force_stdout || !log_to_file {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue