Current section
Files
Jump to
Current section
Files
config/sys.config
[
{erlmcp, [
%% Logging configuration
{log_level, info},
%% Client defaults
{client_defaults, #{
timeout => 5000,
strict_mode => false,
max_pending_requests => 100
}},
%% Server defaults
{server_defaults, #{
max_subscriptions_per_resource => 1000,
max_progress_tokens => 10000
}},
%% Transport settings
{transport_defaults, #{
tcp => #{
connect_timeout => 5000,
keepalive => true,
nodelay => true
},
http => #{
connect_timeout => 5000,
request_timeout => 30000,
max_connections => 100
}
}}
]},
{kernel, [
%% Use the new logger (OTP 21+)
{logger_level, info},
{logger, [
{handler, default, logger_std_h, #{
config => #{
type => standard_io,
sync_mode_qlen => 100,
drop_mode_qlen => 1000,
flush_qlen => 2000
},
formatter => {logger_formatter, #{
%% Better format for debugging
template => [time, " [", level, "] ", pid, " ", mfa, ":", line, " ", msg, "\n"],
%% ISO 8601 timestamps
time_offset => "",
time_designator => $T,
%% Include metadata
single_line => false,
max_size => 4096
}},
filters => [
%% Filter out debug messages in production
{progress_reports, {fun logger_filters:progress/2, stop}},
{sasl_reports, {fun logger_filters:domain/2, {stop, sub, [otp, sasl]}}}
],
%% Log level per handler
level => info
}},
%% Add file handler for persistent logs
{handler, file_log, logger_std_h, #{
config => #{
file => "logs/erlmcp.log",
max_no_bytes => 10485760, %% 10 MB
max_no_files => 5,
compress_on_rotate => true
},
formatter => {logger_formatter, #{
template => [time, " [", level, "] ", pid, " ", mfa, ":", line, " ", msg, "\n"]
}},
level => debug
}}
]}
]},
%% SASL configuration for better error reports
{sasl, [
{sasl_error_logger, false}, %% Use kernel logger instead
{errlog_type, error},
{error_logger_format_depth, 20}
]}
].